【问题标题】:Shrine.rb - How to access the file path / raw file after it's been uploadedShrine.rb - 上传后如何访问文件路径/原始文件
【发布时间】:2018-12-25 12:14:47
【问题描述】:

我还有其他一些可以在图像上执行的任务。例如选择多个图像,并将它们组合成一个图像。我让那部分使用 RMagick 和本地文件,我让上传部分使用 Shrine,但我需要将两者连接起来。上传图像后(理想情况下,该解决方案应与本地文件系统存储和 S3 一起使用),我如何才能再次访问该文件,以使用 ImageMagick/RMagick 对其进行操作?我假设如果我使用 S3,我需要将 S3 中的图像 DL 到服务器并临时存储它们?有没有其他方法可以做到这一点?

【问题讨论】:

    标签: ruby-on-rails shrine


    【解决方案1】:

    您可以使用Shrine::UploadedFile#download 将任何上传的文件下载到临时文件中:

    tempfile = photo.image.download
    # or
    tempfile = photo.image[:original].download
    

    这会返回一个Tempfile 实例,它是File 的包装器,因此您可以通过#path 访问磁盘上的位置:

    system "convert #{tempfile.path} -resize 500x500 output.jpg"
    

    对于图像处理,我建议使用 ImageProcessing gem,它会自动生成 Tempfile 作为结果(如果之前没有,则会在垃圾回收时关闭并删除)。

    【讨论】:

    • 谢谢,@janko-m!这就是我一直在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    相关资源
    最近更新 更多