1

我有一个使用 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 开头”。

你有解决方案吗?

4

3 回答 3

1

解决方案是这样的:

f.write Base64.decode64(data).force_encoding('UTF-8') 
于 2012-10-18T10:04:00.150 回答
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
于 2012-10-16T04:58:06.053 回答
0

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

File.open("#{Rails.root}/public/images/#{self.id}.jpg", "wb") do |f|
   f.write Base64.decode64(data)
end
于 2013-05-29T11:50:51.667 回答