使用rails从JSON上传图像

时间:2012-10-16 00:45:14

标签: ruby-on-rails json cordova backbone.js cors

我有一个使用PhoneGap和Backbone创建的应用程序。我将文件上传为JSon,我的服务器接收如下数据:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/...

我正在尝试编写这样的文件:

File.open("#{Rails.root}/public/images/#{self.id}.jpg", "w+") do |f|
  f.write(data)
end

它不起作用,我不知道该怎么做。当我试图打开文件时,我收到此消息“不是JPEG文件:以0x64 0x61开头”。

你有解决方案吗?

3 个答案:

答案 0 :(得分:1)

解决方案是:

f.write Base64.decode64(data).force_encoding('UTF-8') 

答案 1 :(得分:0)

您需要先解码数据。

尝试:

File.open("#{Rails.root}/public/images/#{self.id}.jpg", "w+") do |f|
  decoded_data = Base64.decode64(data)
  image_data = StringIO.new(decoded_data)
  f.write(image_data)
end

答案 2 :(得分:0)

对我来说,以下是解决方案: (注意打开文件时的二进制写入选项)!

File.open("#{Rails.root}/public/images/#{self.id}.jpg", "wb") do |f|
   f.write Base64.decode64(data)
end