Shrine.rb-上传文件后如何访问文件路径/原始文件

时间:2018-07-17 17:40:49

标签: ruby-on-rails shrine

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

1 个答案:

答案 0 :(得分:2)

您可以使用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宝石,它会自动生成一个Tempfile(如果以前没有使用过,则会在垃圾回收时将其关闭并删除)。