3

I want to handle a base64 photo with paperclip.
When I try:

photo = Photo.new 
string = base64string

photo.photo = StringIO.new(Base64.decode64(string))
photo.save

It does not work. Why?

Thanks in advance.

Lamp
  • 1,084
  • 1
  • 14
  • 27

1 Answers1

9

Make sure that the StringIO you are using is the paperclip opened one. https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/upfile.rb

 sio = StringIO.new(Base64.decode64(string))
 puts sio.respond_to?(:original_filename)
 puts sio.respond_to?(:content_type)

It needs to have those methods in order to have paperclip work with StringIO. Make sure it is setting them.

Michael Papile
  • 6,836
  • 30
  • 30
  • I don't understand this answer, and the github link provided is broken. Any updates? – Raphael Mar 21 '14 at 16:00
  • The issue is that paperclip opened and added methods to the Ruby core class StringIO and expects that the StringIO you are using has them. That is what the respond_to? calls are determining. I am not sure this is true anymore or where they moved paperclip git to. You may want to find that. – Michael Papile Mar 21 '14 at 18:09