実際、私の要件は、いくつかのファイルをいくつかのフォルダーに圧縮することです。サーバーにはすでに多くのファイルが保存されており、いくつかのオブジェクトに関連付けられています。したがって、1 つのオブジェクトに関連するすべてのファイルを次のように圧縮する必要があります。
- メインフォルダー
- サブフォルダー
- 別のフォルダ
- XLSX ファイル
- 別のフォルダ
- サブフォルダー
これは私のヒエラルキーの例です。私がしたことは、これらのフォルダーを作成して、それらのフォルダー内のファイルをコピーし、次のコードを使用して zip を作成することです。
rubyzip ライブラリ自体にあります。しかし、このファイルを Windows で解凍して Microsoft Excel で開くと、次のエラーが表示されます。
'FileName.xlsx' の一部のコンテンツに問題が見つかりました。できる限り復旧を試みますか? このブックの発行元が信頼できる場合は、[はい] をクリックします。
[はい] を押すとファイルが復元されますが、このエラーが発生する理由がわかりません。正常に動作しているサーバーにコピーされたときにExcelファイルを開こうとしましたが、圧縮して解凍するとエラーが発生します。このトピックについて、次のようなさまざまな問題を見てきました。
rubyzip で圧縮された xlsx が Excel で読めない
しかし、助けはありませんでした。
私がもっとやろうとしたのは、圧縮レベルを設定するようなものでZlib::DEFAULT_COMPRESSION
、rubyzip に設定しようとしましたが、それでも同じ問題がありました。また、いくつかの場所で、さらには readme の場合でも rubyzip を使用できることがわかりました。
write_buffer
代わりに使用open
そして、この行で使用してみました(私が見つけた最高のもの):
しかし、別の例外が発生したため、これが解決策である場合、使用方法がわかりません。