4

実際、私の要件は、いくつかのファイルをいくつかのフォルダーに圧縮することです。サーバーにはすでに多くのファイルが保存されており、いくつかのオブジェクトに関連付けられています。したがって、1 つのオブジェクトに関連するすべてのファイルを次のように圧縮する必要があります。

  • メインフォルダー
    • サブフォルダー
      • 別のフォルダ
        • XLSX ファイル

これは私のヒエラルキーの例です。私がしたことは、これらのフォルダーを作成して、それらのフォルダー内のファイルをコピーし、次のコードを使用して zip を作成することです。

https://github.com/rubyzip/rubyzip/blob/05916bf89181e1955118fd3ea059f18acac28cc8/samples/example_recursive.rb

rubyzip ライブラリ自体にあります。しかし、このファイルを Windows で解凍して Microsoft Excel で開くと、次のエラーが表示されます。

'FileName.xlsx' の一部のコンテンツに問題が見つかりました。できる限り復旧を試みますか? このブックの発行元が信頼できる場合は、[はい] をクリックします。

[はい] を押すとファイルが復元されますが、このエラーが発生する理由がわかりません。正常に動作しているサーバーにコピーされたときにExcelファイルを開こうとしましたが、圧縮して解凍するとエラーが発生します。このトピックについて、次のようなさまざまな問題を見てきました。

rubyzip で圧縮された xlsx が Excel で読めない

しかし、助けはありませんでした。

私がもっとやろうとしたのは、圧縮レベルを設定するようなものでZlib::DEFAULT_COMPRESSION、rubyzip に設定しようとしましたが、それでも同じ問題がありました。また、いくつかの場所で、さらには readme の場合でも ruby​​zip を使用できることがわかりました。

write_buffer代わりに使用open

そして、この行で使用してみました(私が見つけた最高のもの):

https://github.com/rubyzip/rubyzip/blob/7aa3666e341b4ecf3b66321d734802a77bba962b/lib/zip/file.rb#L311

しかし、別の例外が発生したため、これが解決策である場合、使用方法がわかりません。

4

0 に答える 0