我有一个图像文件的base64编码字符串。我需要使用Paper Clip
保存它我的控制器代码是
@driver = User.find(6)
encoded_file = Base64.encode64(File.open('/pjt_path/public/test.jpg').read)
decoded_file = Base64.decode64(encoded_file)
@driver.profile_pic = StringIO.open(decoded_file)
@driver.save
在我的用户模型中
has_attached_file :profile_pic, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => '/icon.jpg'
目前,该文件已保存为文本文件(stringio.txt)。但是当我将扩展名更改为JPG时,我可以将其视为图像。如何使用StringIO正确命名图像。
我有rails 3.2,ruby 1.9.2,paperclip 3.0.3
答案 0 :(得分:11)
我使用
解决了这个问题encoded_file = Base64.encode64(File.open('/pjt_path/public/test.jpg').read)
decoded_file = Base64.decode64(params[:encoded_image])
begin
file = Tempfile.new(['test', '.jpg'])
file.binmode
file.write decoded_file
file.close
@user.profile_pic = file
if @user.save
render :json => {:message => "Successfully uploaded the profile picture."}
else
render :json => {:message => "Failed to upload image"}
end
ensure
file.unlink
end
答案 1 :(得分:2)
尝试设置:path
的{{1}} / :url
选项并明确覆盖扩展程序:
http://rdoc.info/gems/paperclip/Paperclip/ClassMethods#has_attached_file-instance_method
分别
http://rdoc.info/gems/paperclip/Paperclip/Storage/Filesystem