使用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
答案 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中的文件名。