2012-10-25 32 views
5

我有一個TempFile對象,它是一個zip文件,我希望從它的內容如下:紅寶石:讀一個臨時的zip文件

Zip::ZipFile.open_buffer(tempfile) do |zipfile| 
    ... 
end 

然而,當我這樣做,我得到以下錯誤:

Zip::ZipFile.open_buffer expects an argument of class String or IO. Found: Tempfile 

我也試過

Zip::ZipFile.open(tempfile.path) do |zipfile| 
    ... 
end 

但返回

can't dup NilClass 

如何處理臨時zip文件?

回答

2

事實證明,臨時文件被損壞,所以

can't dup NilClass 

錯誤是由於嘗試讀取損壞的文件造成的。

因此,解決方案是使用

Zip::ZipFile.open(tempfile.path) do |zipfile| 
    ... 
end 
+0

如果這解決了您的問題,請將您自己的答案標記爲已接受。 –

0

我面臨着同樣的錯誤,但挖後,我發現,這些壓縮文件應該是二進制

即首先將它們複製到某些文件二進制模式則可以使用ZIP模塊解壓它而不面向錯誤

示例代碼

​​