问题标签 [rubyzip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
213 浏览

ruby-on-rails - RubyZip 失败 - 关闭流

我有一本带有以下红宝石代码的厨师食谱:

我在工件存储库中有一个 zip 文件,该文件已压缩并上传,我提供了该端点以供此代码接收:

这使用了帖子中提到的辅助函数,但是当我运行它时,出现以下错误:

不知道为什么我会在这里得到“封闭流”?

0 投票
3 回答
4201 浏览

ruby-on-rails - NameError - 未初始化的常量 Zip

我正在尝试在我的 Spree 插件中解压缩文件。

在一个看起来像这样的模块中定义了解压缩方法。

我在我的 Gemfile 中包含了 ruby​​zip gem。

尝试运行它时,我收到以下错误。

我已经尝试过 stackoverflow 和其他网站提供的所有解决方案。我尝试降级现在 1.2.0 的 ruby​​zip 版本并添加require 'zip'or require 'zip/zip'. 两者都返回加载错误。

我已经尝试添加require 'zip/filesystem'到课程中。但是得到了

有什么解决办法吗?

0 投票
1 回答
666 浏览

ruby - 未初始化的常量 Zip::Archive

最初我使用了 zipruby gem 并升级了 rails 环境并尝试切换 ruby​​zip。那么这相当于什么。

在 gem 文件中使用 gem - gem 'rubyzip',gem 'nokogiri',rails-4.1.9,ruby -2.2

问题 - 未初始化的常量 Zip::Archive

0 投票
1 回答
105 浏览

ruby - rubyzip Zip::FileSystem::ZipFsDir glob 方法坏了?

glob使用 1.2.0 版,当我尝试调用一个ZipFsDir对象时,我得到了奇怪的结果。在 Rails 控制台中:

为什么报告该方法未定义Zip::FileSystem::ZipFileNameMapper?我在一个ZipFsDir对象上调用它。文档清楚地列出globZipFsDir 实例方法

0 投票
1 回答
4333 浏览

ruby-on-rails - 如何使用 RubyZIP 将现有文件添加到 ZIP 文件?

在我的 Rails 4.2 应用程序中,我使用RubyZIP创建类似于以下内容的控制器操作:

在示例中,两个文件是动态创建和写入的,然后保存到 ZIP 文件中。

但是如何将已经存在的文件(!)也添加到 ZIP 文件中,例如我/app/assets/documents文件夹中的 PDF 文件?

这应该更容易实现,但我找不到任何文档。

谢谢你的帮助。

0 投票
1 回答
349 浏览

ruby - rubyzip 输出字符串和写入文件的 md5sum 不同

我正在使用 ruby​​zip-1.2.0 和 ruby​​ 2.2.1 来生成一个包含单个文件的 zip 文件(在本例中是一个 python 脚本)。内容文件没有变化,生成的zip字符串的md5sum保持不变,但是一旦我写入然后读取zip字符串到文件,长度增加并且每次md5sum都不一样。无论我使用File.open(zip_file, 'wb') {}还是都会发生这种情况IO.binwrite(zip_file, zip_string)

更令人兴奋的是,在 OS X 上,zip 字符串和写入的文件大小不同(当然,md5sum 不同),但在 Ubuntu 14.04 上,大小保持一致并且 md5sum 不同。

如果我多次生成文件而没有暂停,则校验和(​​通常)是相同的;如果我进入睡眠状态,它们会有所不同,这让我想知道 ruby​​zip 是否正在将某种时间戳写入文件?

我可能只是错过了 ruby​​ 二进制文件处理的一些细微差别。

OS X 上的输出:

Ubuntu 14.04 上的输出:

任何解释或解决方法?我想在重写文件之前确保 zip 文件的内容不同。

编辑以修复文件 md5sum 并更新输出。

编辑 实际上 ruby​​zip 确实将当前时间戳放在每个条目中(为什么?)。如果我对其进行修补以便我可以操纵条目属性,则 zip 字符串的 md5sum 将保持不变。

0 投票
0 回答
520 浏览

ruby - 如何使用 ruby​​zip 在 Zip 文件中设置二进制标志?

我收到了关于我使用 ruby​​zip 1.2.0 创建的 zip 文件的投诉:

text.pdf 的文本标志在解压后损坏了 pdf。

我在 windows 下创建 zip,收件人使用 Unix/Linux。

zipinfo您可以使用(或unzip -Z使用窗口) 查看标志。unzip -Z -l test.zip结果:

这是相关的测试代码:

我检查了Zip::Entry的源代码,找到了 的定义 @internal_file_attributes = 1,但不可能影响这个值。

根据这些信息,我制作了一个补丁 Zip::Entry,如下所示:

当我在上面的测试代码中添加这个补丁时,我得到:

所以我找到了解决我的问题的方法 - 但是还有另一个更好的解决方案吗?

在添加文件期间是否可以设置二进制标志?

0 投票
0 回答
484 浏览

ruby-on-rails - Xlsx 文件在使用 ruby​​zip 压缩并在 Windows 上解压缩后在 MS Excel 上出现错误

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

  • 主文件夹
    • 子文件夹
      • 另一个文件夹
        • 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

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

0 投票
2 回答
634 浏览

ruby - Rubyzip download attachments without creating the archive

I am using rubyzip with rails 4 and I am trying to make a custom method to download all the attachments in the submission table without phisically creating the zip file.

submissions_controller.rb

How can I set the file var right. The documentation says that that is the archive name, but I do not want to create that physical archive. Maybe just as a tmp ?

0 投票
1 回答
308 浏览

ruby - 尝试读取压缩文件时 ENOENT

我正在编写一个简单的程序,它接受一个输入字符串,将其拆分为单词并将其保存在它的内存中。有三种方法——将字符串保存到内存中、从文件加载和从 zip 存档加载。这是代码:

虽然addload_from_file方法按我load_from_zip的预期完美运行,但每次我尝试运行它时都会返回以下错误:

尽管该文件存在于我的存档中。对于我做错的任何建议,我将不胜感激