Rails中如何使用Paperclip在rake任务中上传照片?

4
我该如何通过控制台或rake任务使用Paperclip上传文件?没有表单,我有点不确定它是如何工作的。有人处理过这个问题吗?
更新 所以我找到了这个:
image = Image.new(:storage => File.open('/path/to/my/image.png', rb))

但我想这样可以让我的问题简单一些,假设我的照片实际上已经在线上(在不同的域名下),我想使用Paperclip将其转换并上传到我的服务器。是否有可能以某种方式向File.open提供一个URL?

3个回答

6

试一试。

require 'open-uri'
image = Image.new(:storage => open("http://path.to.the/image.png"))

我在终端中尝试时可以使用,只需执行以下操作:

require 'open-uri'
image = open("http://i.stack.imgur.com/qjKuQ.jpg")

这导致了:
=> #<File:/var/folders/Zo/ZoJYH-A6Eg8GQ3pV0fIyhU+++TU/-Tmp-/open-uri20101117-5813-1h64t5k>

Hugo就在这里,你只需要将一个文件对象传递给模型上的访问器设置即可。 - Ryan Bigg
Ryan,我认为我的问题是我正在使用S3作为我的存储,你有什么想法吗? - JP Silvashy
最终,这个方法解决了我从其他平台移动照片的问题!但是还有一个问题。使用此方法,Paperclip保存没有扩展名的照片,因为它从临时文件中获取扩展名。如何解决这个问题?谢谢! - Gediminas Šukys
哦,我在这里找到了它https://dev59.com/BWgu5IYBdhLWcg3wLEI9。感谢您提供的第一步! - Gediminas Šukys

1

然而,它将文件保存为“open-uri12345sdf-1301fp”(没有扩展名)在数据库中。我们如何在photo_file_name字段中保存原始文件名。


1

我觉得这有点像黑客技巧,但我只是在我的迁移中使用ActionDispatch :: Http :: UploadedFile.new对象复制文件并以此运行它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接