回形针:以编程方式分配图像并设置其名称

时间:2011-09-15 18:51:31

标签: ruby amazon-s3 paperclip

使用Paperclip,我想从这样的URL中抓取图像:

require 'open-uri'

user.photo = open(url)

问题是我最后会找到像'open-uri20110915-4852-1o7k5uw'这样的文件名。有没有办法在user.photo上更改文件名?

作为一个额外的转折,Paperclip将我的文件存储在S3上,所以如果我可以在初始分配中设置我想要的文件名,那就更好了,所以图像上传到正确的S3键。像这样:

user.photo = open(url), :filename => URI.parse(url).path

2 个答案:

答案 0 :(得分:6)

您可以通过以下方式将文件名写回实例:

 photo.instance_write(:file_name, new_file_name)

因此,如果您的源网址如下:

 http://example.com/foo.jpg

您可以先从网址解析名称(获取foo.jpg),然后使用上述instance_write方法将其写回实例。

答案 1 :(得分:5)

io = open(url)
def io.original_filename; base_uri.path.split('/').last; end

这会将文件名设置为url中的文件名。