9

我在我的应用程序中使用回形针作为附件。我正在为一堆旧数据编写导入脚本,但我不知道如何从磁盘上的文件创建回形针对象。我的第一个猜测是创建模拟 CGI 多部分对象,但这似乎有点粗略,我最初的尝试失败了,我认为是因为我没有正确使用 to_tempfile 方法。

有正确的方法吗?这似乎是一件相当容易的事情。

4

2 回答 2

16

我知道我做过同样的事情,并且我相信我只是从每个文件的路径创建了一个 File 对象,并将其分配给 image 属性。Paperclip 将在该文件上运行:

thing.image = File.new("/path/to/file.png")
thing.save
于 2009-12-07T23:24:00.087 回答
15

这适用于本地文件,但不适用于远程文件。我有一个使用回形针上传图像的应用程序。这些图像存储在 amazon s3 上。无论如何,我有一些需要导入的旧数据,所以我尝试了以下方法:

thing.image = open('http://www.someurl.com/path/to/image.jpg')
thing.save

如果文件很小(比如小于 10K),那么 openuri 返回一个 stringio 对象,我的文件将作为 stringio.txt 存储在 s3

如果文件大于 10K 左右,则 openuri 返回一个 TempFile 对象。但是 s3 上的文件名最终是唯一的,但与 image.jpg 的原始文件名并没有真正的关系

我能够通过执行以下操作来解决问题:

remote_photo = open('http://www.someurl.com/path/to/image.jpg')
def remote_photo.original_filename;base_uri.path.split('/').last; end   
thing.image = remote_photo
thing.save
于 2010-05-06T17:51:54.947 回答