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

Pau*_*rth 5 ruby amazon-s3 paperclip

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

require 'open-uri'

user.photo = open(url)
Run Code Online (Sandbox Code Playgroud)

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

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

user.photo = open(url), :filename => URI.parse(url).path
Run Code Online (Sandbox Code Playgroud)

Cod*_*lan 6

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

 photo.instance_write(:file_name, new_file_name)
Run Code Online (Sandbox Code Playgroud)

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

 http://example.com/foo.jpg
Run Code Online (Sandbox Code Playgroud)

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


laf*_*ber 5

io = open(url)
def io.original_filename; base_uri.path.split('/').last; end
Run Code Online (Sandbox Code Playgroud)

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