2012-05-10 17 views
8

Bir görüntü dosyasının base64 kodlu dizesinde sahibiyim. Ben ataşDosya Yükleme PaperClip'te Base64 kodlanmış dizgi Rails kullanarak

My Denetleyici kodunu kullanarak kaydetmek gerekir benim kullanıcı modeli anda dosya bir metin dosyası (stringio.txt) olarak kaydedilir

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

yılında

@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 

olduğunu. Ama uzantıyı JPG olarak değiştirdiğimde, görüntü olarak görüntüleyebilirim. Görüntüyü StringIO kullanarak nasıl doğru adlandırabilirim.

ben yaşıyorum raylar 3.2, yakut 1.9.2, ataç 3.0.3

cevap

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

ile daha fazla kod yazabilirsiniz sorunu çözdünüz mü? Onu çok sıkıcı buldum! –

+1

@EmSta - Komple kodu buraya gönderdim. Bu kod benim denetleyici işlevime eklenir. Lütfen daha fazla kodun gerek duyduğunu bana bildirin –

+0

Yeni bir soru soruyorum: http://stackoverflow.com/questions/17336788/paperclip-upload-an-image-encoded-with-base64 Belki bana yardımcı olabilirsiniz @AmalKumarS –

İlgili konular