从rails下载到iphone压缩文件缺失部分

时间:2013-03-06 04:07:16

标签: iphone ios ruby-on-rails ziparchive

我正在使用send_file从我的rails服务器下载包含多个图像的压缩文件到我的iPhone。在Rails上我使用的是Zip :: ZipOutputStream.put_next_entry,我认为它来自rubyzip。在iPhone上我使用ZipArchive使用UnzipFileToData将文件解压缩回多个文件到内存中。我遇到的问题是图像的底部是随机量的黑色。一些图像没有黑色部分,其他图像的底部部分最多有一半被涂黑。图像很小,大小约为20 KB。

我遇到的问题是我无法弄清楚从导轨到iPhone的路径的哪一部分会导致图像的底部部分变黑。

 1.  I've ftp'ed the zipped file from my Rails server to my Mac and unzipped them and the images look fine, which means the images are getting zipped on the Rails server correctly.
 2.  I've tried reversing the order that the images are added to the zip file, but the same amounts of the bottom of the images are blacked out.
 3.  Could it be that different compression levels are being used?  

任何人都知道为什么多文件压缩文件中的解压缩图像会丢失图像底部的随机部分?

1 个答案:

答案 0 :(得分:1)

找到解决方案here。我的rails代码最初看起来像:

 Zip::ZipOutputStream.open(zipped_file.path) do |z|
    user_photo_array.each do |file|
        z.put_next_entry(File.basename(file))
        z.print IO.read(file)
    end
 end

并且如上所述,IO.read对于二进制文件是有问题的,所以我按照链接的建议并用File.open(文件,“rb”)替换了IO.read {| f | f.read} as

 Zip::ZipOutputStream.open(zipped_file.path) do |z|
    user_photo_array.each do |file|
        z.put_next_entry(File.basename(file))
        z.print File.open(file, "rb"){ |f| f.read }
    end
 end

并解决了这个问题!