Tag: 拉链

Rails:zip格式的输出即时流式传输?

我需要通过zip文件从我的数据库中提供一些数据,并在运行时将其流式传输: 我不写临时文件到磁盘 我没有在RAM中编写整个文件 我知道我可以使用ZipOutputStream将zip文件的流生成生成到filesystemk,就像这里一样 。 我也知道我可以通过将response_body设置为Proc来从rails控制器进行流输出。 我需要(我认为)是将这两件事融合在一起的一种方式。 我可以让rails提供ZipOutputStream的响应吗? 我可以获得ZipOutputStream给我增量的数据块,我可以将其提供给我的response_body Proc吗? 或者还有另一种方式吗?

如何直接从其路径中获取Ruby gem?

为了使用rubyzip我安装了gem: gem install –local rubyzip-1.1.7.gem gem install –local zip-zip-0.3.gem 在我的代码中,我使用require方法调用gem: require ‘zip/zip’ require ‘zip/filesystem’ 我想使用require直接从我们机器上的位置加载gem。 我想要这样的事情: require ‘path_to_my_zip_gem’ 其中path_to_my zip_gem包含gem文件

如何在Ruby中迭代内存中的zip文件

我正在写一个unit testing,其中一个正在返回一个zip文件,我想检查这个zip文件的内容,从中获取一些值,并将值传递给下一个测试。 我正在使用Rack Test,所以我知道我的zip文件的内容在last_response.body 。 我查看了RubyZip的文档,但似乎总是期待一个文件。 由于我正在运行unit testing,我更喜欢在内存中完成所有操作,以免污染任何带有测试zip文件的文件夹,如果可能的话。

在Rails中压缩目录

我如何在rails上的ruby中压缩目录? 我试过rubyzip没有成功。 我不需要单独压缩dir的内容只是压缩dir本身。

Ruby:下载zip文件并解压缩

我有一个ruby脚本,使用rubys open命令从服务器下载远程ZIP文件。 当我查看下载的内容时,它显示如下内容: PK\x03\x04\x14\x00\b\x00\b\x00\x9B\x84PG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x10\x00foobar.txtUX\f\x00\x86\v!V\x85\v!V\xF6\x01\x14\x00K\xCB\xCFOJ,RH\x03S\\\x00PK\a\b\xC1\xC0\x1F\xE8\f\x00\x00\x00\x0E\x00\x00\x00PK\x01\x02\x15\x03\x14\x00\b\x00\b\x00\x9B\x84PG\xC1\xC0\x1F\xE8\f\x00\x00\x00\x0E\x00\x00\x00\n\x00\f\x00\x00\x00\x00\x00\x00\x00\x00@\xA4\x81\x00\x00\x00\x00foobar.txtUX\b\x00\x86\v!V\x85\v!VPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00D\x00\x00\x00T\x00\x00\x00\x00\x00 我尝试使用Rubyzip gem( https://github.com/rubyzip/rubyzip )及其类Zip::ZipInputStream如下所示: stream = open(“http://localhost:3000/foobar.zip”).read # this outputs the zip content from above zip = Zip::ZipInputStream.new stream 不幸的是,这会引发错误: Failure/Error: zip = Zip::ZipInputStream.new stream ArgumentError: string contains null byte 我的问题是: 通常,是否可以下载ZIP文件并将其内容提取到内存中? Rubyzip是否适合它? 如果是这样,我该如何提取内容?

如何仅在内存中修改zip文件?

我有一个Ruby应用程序,我需要修改现有的zip文件。 我想在内存中构建zip文件并流回字节而无需将文件写入文件系统。 如果我最终在Heroku上托管这个,我不认为我可以写入文件系统。 有谁知道这样做的方法? 我查看了Zip :: ZipFile,但看起来它总是想写入文件系统。 我认为“基于java实现”我将能够获得压缩文件的字节,你可以在java中做,但我没有办法做到这一点。 编辑: 我要问的基本上与此相同,但是对于Ruby而不是Python: 函数创建内存中的zip文件并作为http响应返回

压缩存储在S3上的所有Paperclip附件

Paperclip是Rails的一个很棒的上传插件。 将上传存储在本地文件系统或Amazon S3上似乎运行良好。 我只假设本地主机上存储文件,但此应用程序需要使用S3,因为它将托管在Heroku上。 如何通过单个压缩下载从S3获取所有上传/附件? 从本地文件系统获取zip 文件似乎很简单。 它让S3中的文件让我感到困惑。 我认为这可能与rubyzip处理URL引用的文件的方式有关。 我尝试了各种方法但似乎无法避免错误。 format.zip { registrations_with_attachments = Registration.find_by_sql(‘SELECT * FROM registrations WHERE abstract_file_name NOT LIKE “”‘) headers[‘Cache-Control’] = ‘no-cache’ tmp_filename = “#{RAILS_ROOT}/tmp/tmp_zip_” << Time.now.to_f.to_s < No such file or directory – http://s3.amazonaws.com/bucket/original/abstract.txt # Should note that these files in S3 bucket are publicly accessible. No ACL. # works […]

Ruby Unzip String

我必须在Ruby中使用压缩( 常规Zip )字符串。 显然我无法使用Ruby-Zip或Zip-Ruby保存临时文件。 解压这个字符串有什么可行的方法吗?