2012-05-10 13 views
8

Tengo en base64 cadena codificada de un archivo de imagen. Necesito guardarlo mediante clip de papelCarga de archivos Cadena codificada en Base64 en PaperClip utilizando Rails

código Mi controlador es

@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 

En mi modelo de usuario

has_attached_file :profile_pic, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => '/icon.jpg' 

la actualidad, el archivo se guarda como un archivo de texto (stringio.txt). Pero cuando cambio la extensión a JPG, puedo verla como imagen. ¿Cómo puedo nombrar la imagen correctamente usando StringIO?

que estoy teniendo carriles 3.2, Ruby 1.9.2, 3.0.3 paperclip

Respuesta

11

He solucionado el problema usando

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 
+0

¿puede publicar más de su código? ¡Lo encontré muy interesante! –

+1

@EmSta - He publicado el código completo aquí. Este código se agrega en mi función de controlador. Por favor, hágame saber qué más código necesita –

+0

Hago una nueva pregunta: http://stackoverflow.com/questions/17336788/paperclip-upload-an-image-encoded-with-base64 Tal vez pueda ayudarme @AmalKumarS –

Cuestiones relacionadas