4

其实我的要求是在一些文件夹中压缩一些文件。我已经在我的服务器上保存了许多文件并与一些对象相关联。所以我必须压缩与一个对象相关的所有文件,有点像这样:

  • 主文件夹
    • 子文件夹
      • 另一个文件夹
        • XLSX 文件

这是我的层次结构的一个例子。我所做的是我创建了这些文件夹,复制了这些文件夹中的文件并使用以下代码创建了一个 zip:

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

在 ruby​​zip 库本身上找到。但是,当我在 Windows 上解压缩此文件并在 Microsoft Excel 中打开它时,出现以下错误:

我们发现“FileName.xlsx”中的某些内容存在问题。您希望我们尽可能多地恢复吗?如果您信任此工作簿的来源,请单击是

按是恢复文件,但我不知道为什么会出现这个错误。我尝试在工作正常的服务器上复制excel文件时打开它,但是一旦压缩和解压缩,就会出现错误。我已经看到了这个主题的一些不同的问题,比如:

由 ruby​​zip 压缩的 xlsx 无法被 Excel 读取

但没有任何帮助。

我尝试做的更多是设置压缩级别,我尝试将其设置Zlib::DEFAULT_COMPRESSION为 ruby​​zip,但尽管如此,我还是遇到了同样的问题。在某些地方,甚至在自述文件中,如果 ruby​​zip 我发现我们可以使用:

write_buffer改为使用open

我在这条线上尝试了它(我能找到的最好的):

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

但它给了我一个不同的例外,所以如果这是解决方案,我不知道如何使用它。

4

0 回答 0