Missing extension when save image on paperclip
image = PortfolioFileItem.find(107)
img_source = "http://s3.amazonaws.com/test/portfolio_file_items_final/original/1.jpg"
image.picture_from_url(img_source)
image.save(false)
image save DONE but missing extensionof image. this is sa开发者_如何学编程mple image name saved: open-uri20110528-6779-fpiust-0.
Please help me solved problem. thanks
To add an extension to paperclip add this line after has_attached_file as an option
:path => ":rails_root/public/:attachment/:id/:style/:basename.:extension"
You can customize this path to fit your needs however you must have the .:extension
at the end, the :extension is one of many values that can be used for interpolation.
See this blog post for more information.
If the actual file does not have an extension originally you can detect extension and add it before saving
def before_save
tempfile = data.queued_for_write[:original]
unless tempfile.nil?
extension = File.extname(tempfile.original_filename)
if !extension || extension == ''
mime = tempfile.content_type
ext = Rack::Mime::MIME_TYPES.invert[mime]
self.data.instance_write :file_name, "#{tempfile.original_filename}#{ext}"
end
end
true
end
精彩评论