簡體   English   中英

如何使用 rubyzip 避免“找不到中央目錄簽名的 Zip 結尾(Zip::Error)”?

[英]How can I avoid "Zip end of central directory signature not found (Zip::Error)" with rubyzip?

我正在使用 rubyzip 閱讀很多 zip 文件。

但是,此錯誤消息始終僅顯示在特定文件中,即使它是 zip 文件。

/app/vendor/bundle/ruby/2.3.0/gems/rubyzip-1.2.1/lib/zip/central_directory.rb:143:in `get_e_o_c_d': Zip 未找到中央目錄簽名的結尾(Zip::Error)

我猜這個錯誤發生在 rubyzip 中。

我該如何管理這個錯誤?

這是我的代碼。

url = 'http://example.zip'

zipfilename = open(url)

Zip::File.open(zipfilename, :allow_redirections => :all) do |zip_file|

   entry = zip_file.glob("*ixbrl.htm").first

   stream = entry.get_input_stream.read

   puts stream

end

謝謝!

當我嘗試從我的應用程序中上傳的.xlsx文件中提取數據時,我遇到了這個錯誤。 在我的上下文中, .xlsx文件已損壞,因此我的解決方案是將內容(我通常在上傳后處理緩沖區文件)保存為 csv 文件(在我的應用程序中,我不需要擔心文件擴展名),修復內容強制將其編碼為 utf-8,並在其后提取其數據。 這是代碼示例,我使用roo-xls gem 處理.xls文件,使用roo gem 處理.csv.xlsx文件。

我遇到了同樣的錯誤。 也只能在 Heroku 上重現。 在我添加了一個解壓縮的 buildpack(第二個​​,在 Ruby 之后)后,這個錯誤得到了修復。

https://github.com/davidlibrera/heroku-buildpack-unzip

如果您使用的是 docs xlsx 文件,請嘗試檢查工作表鏈接的訪問權限是否是公開的。

就我而言,文件也已損壞。 上面有 Matheus Porto 的表演!

  *Zip end of central directory signature not found (Zip::Error)*
  ./features/Classes/CSVmanubula.rb:268:in `new'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM