2012-04-18 54 views
0

我有一堆需要轉換爲XML的記錄,然後壓縮成一個文件,所以我可以將它發送到期待所說的服務器上記錄。 我的問題是,該服務器只能接受小於給定的量更小的文件..可以說,因爲參數的緣故10兆如何在rails中創建給定壓縮大小的zip文件

require 'zip/zip'  
    Zip::ZipOutputStream.open("tmp/myfile_#{Process.pid}.zip") do |zos| 
     i_xml.each_with_index do |xml, index| 
     zos.put_next_entry("#{index}.xml") 
     zos << xml 
     end 
    end 

上面的代碼創建完美的zip文件..但我不看不出我如何獲得壓縮的大小。

我可以給一些拉鍊標題和東西的方式。所以一旦我可以告訴我的輸出有多大,我可以修補。這種大小似乎不適合這個班級。

注意:我試過安裝zipRuby是因爲它有一個壓縮大小的方法,但是這隻會導致我失去另一個兔子洞。本機擴展等。

回答

0

在Zip庫中看不到任何內容來執行此操作,對不起。

考慮,如果可以的話:

  • 與得到zipRuby進一步推編譯
  • 打破了成品zip文件成固定大小的塊用簡單的File.read聲明和把塊重新走到一起的服務器。
  • 通過限制添加的文件數量來限制壓縮文件的大小,例如,添加文件,直到超過文件大小限制,然後刪除最後添加的文件,並將其添加到一個新的zip文件
+0

是啊..我沒有問題,過去了,我只是短了..說我得到10兆,以及我建立了9.5,我很安全..但我遇到的問題是,我如何獲得壓縮文件的大小在軌道上。 – baash05 2012-04-18 07:01:40

+0

通過將文件重新放回服務器,不確定您的意思。我不擁有文件所在的系統。 – baash05 2012-04-18 07:02:42

+0

zipRuby的想法可能是我的最佳選擇,但我甚至不知道從哪裏開始完成任務..對於這些問題,似乎沒有什麼指導的方式。我會繼續閱讀它.. – baash05 2012-04-18 07:05:33