0

I have an angularJs app that sends a base64 encoded image (or file) to my rails4 server api that uses paperclip to store attachments. Everything works fine until the content_type_validation paperclip does.

For some reason, paperclip determines the content-type's been spoofed and get the following error message:

[paperclip] Content Type Spoof: Filename 1413325092.jpg (["image/jpeg"]), content type discovered from file command: application/octet-stream; charset=binary. See documentation to allow this combination.

I create the paperclip attachment with the following code:

    def self.create_from_base64(base64_string)
        decoded_data = Base64.decode64(base64_string) 
        # create 'file' understandable by Paperclip
        data = StringIO.new(decoded_data)
        data.class_eval do
        attr_accessor :content_type, :original_filename
        end
        # set file properties
        data.content_type = 'application/octet-stream'
        data.original_filename = "#{Time.now.to_i}.jpg"
    end

I've tried different things but for some reason even when I set data.content_type = 'application/octet-stream', the error is exactly the same, and paperclip it's been spoofed.

Any ideas?

Thanks,

EDIT:

I have the following validation:

validates_attachment_content_type :file, :content_type => [/png\Z/, /jpe?g\Z/, /application\/octet-stream*/]

scanales
  • 602
  • 1
  • 7
  • 18
  • hi @scanales, I am also trying to upload image using paperclip with Rails and Angularjs. But I failed to send to rails controller from Angularjs controller. How did you manage do to it. Could you please explain it? – Vieenay Siingh Oct 16 '14 at 11:39
  • @Vieenay I used websocketrails to send it as a base64 encoded string. – scanales Oct 16 '14 at 13:28

0 Answers0