2015-07-03 98 views
1

我有一个应用程序,管理员可以上传图像。我将图像保存在一个文件中,并且还保存在我的数据库中的base64编码(使用红宝石的Base64.strict_encode方法)&。这样当稍后有人从HDD/Server中删除物理文件时,我仍然可以通过base64解码(Base64.decode方法)将其生成并保存在文件中。Base64编码图像并稍后将其保存到文件

但编码和解码不顺利的形象受损,我无法查看其保存后。

当我使用http://www.base64-image.de/来编码文件时,我检查了Base64.strict_encode的输出结果,它们是不同的。

任何人都可以帮助我吗?我究竟做错了什么?我没做什么?

对图像进行编码期间UPLOAD:

imageLoc = image.image.to_s 
    logger.info '>>>>>>' + (Base64.strict_encode64(open(imageLoc).read)).to_s 
    image_data = Base64.strict_encode64(File.open(imageLoc, 'rb').read) 
    CategoryImage.update_image_data(image.id,image_data) 

解码时图像文件丢失:

File.open(File.join(APP_CONFIG['image_storage_location'], image[:image]), 'wb') { |f| 
    content = image[:image_data] 
    content.gsub!('\\r', "\r") 
    content.gsub!('\\n', "\n") 
    f.write(Base64.decode64(content)) 
    f.close 
    } 

编码图像从所述站点(base64-image.de):https://shrib.com/cYLKfEe1?v=nc

ENCODED IMAGE从我的代码:https://shrib.com/CODE-encoded%20image?v=nc

编辑

当我用我从上面指定的网站生成的图像数据替换我的数据库中的编码图像数据时,我的图像被重新生成并可以查看。所以真正的编码。

回答

2

曾经一个类似的问题,通过用IO.binread(imageLoc)替换File.read方法来解决它。希望能帮助到你。 :)

+0

谢谢,人......现在工作正常。非常感谢你。 – Hardeshorlar

+1

我之前把代码放在错误的文件中......谢谢。你救了我的一天! – Hardeshorlar

+0

您的欢迎。我很高兴我能提供帮助。 – ssuljic

相关问题