标签: rubyzip

使用rubyzip错误 - 没有这样的文件加载 - zip/zip

我知道这个主题还有另一个主题,但即使使用了所有解决方案后我仍然面临这个问题.有没有其他方法来生成zip文件?我可以使用Ubuntu系统命令吗?

我做到了

 gem install rubyzip
Run Code Online (Sandbox Code Playgroud)

我有

require 'rubygems'
require 'zip/zip'
Run Code Online (Sandbox Code Playgroud)

在我的控制器中

但我仍然得到相同的错误 - 没有这样的文件加载 - zip/zip我尝试使用ruby 1.8.7和ruby 1.9.2与rails 3.0.5在Ubuntu

请你帮助我好吗?谢谢.

rubygems ruby-on-rails rubyzip ruby-on-rails-3

25
推荐指数
4
解决办法
2万
查看次数

rails 3 - LoadError(无法加载此类文件 - zip/zip)

我正在使用rubyzip压缩csv文件,因此用户可以下载它.这在开发模式下完美运行.但是当我尝试在生产服务器(rackspace)上压缩文件时,我收到错误:LoadError(无法加载此类文件 - zip/zip).这是路径问题吗?有人知道修复吗?

我的代码在这一行调用错误:require'zip/zip'

我从这里尝试了解决方案,但它没有帮助.

rubygems rubyzip ruby-on-rails-3

14
推荐指数
5
解决办法
1万
查看次数

rails 3和rubyzip 1.0.0 uninitialized constant Zip :: ZipFile

我试图打开一个docx文件并使用rubyzip 1.0.0和rails 3写回来.

在我的gemfile中我有:

gem 'rubyzip'
Run Code Online (Sandbox Code Playgroud)

我正在运行的代码是;

module Look

  class Generator

    def initialize(item)
      doc   = Nokogiri::XML.parse(item.to_xml)
      xslt  = Nokogiri::XSLT(File.read("<path_to_xslt_file>.xslt"))
      @outxml=xslt.transform(doc)
      zip = Zip::ZipFile.open("<path_to_docx_file>.docx")
      @outxml
    end

  end

end
Run Code Online (Sandbox Code Playgroud)

虽然正确创建了@outxml(我可以手动将其添加到docx文件并查看结果),但我甚至无法开始创建zip文件,因为这...

uninitialized constant Zip::ZipFile
Run Code Online (Sandbox Code Playgroud)

检查了所有文档并尝试了很多组合后,我仍然感到非常难过.

任何人都可以告诉我为什么这不起作用?

谢谢.

ruby-on-rails rubyzip

11
推荐指数
1
解决办法
6888
查看次数

ruby on rails roo gem无法加载zip/zipfilesystem

我正在尝试使用roo gem来处理由外部方上传的.xlsx电子表格.我收到以下错误:

LoadError(无法加载此类文件 - zip/zipfilesystem):

我发现了很多类似于这个的问题(比如无法加载这样的文件 - zip/zip),我试图按照他们的解决方案.到目前为止,无济于事.

我最初在控制器中需要'roo',在得到这个错误之后尝试了'zip/zip','zip/zipfilesystem',只是'zip'.这些似乎都没有解决任何问题.我还尝试添加:require =>'zip',:require =>'zip/zipfilesystem',:require =>'zip/zip'到Gemfile,但这些似乎都没有改变.这是一些相关的代码:

在Gemfile中:

# for spreadsheet upload management
gem 'roo'
gem 'rubyzip'
gem 'spreadsheet'
gem 'nokogiri'
Run Code Online (Sandbox Code Playgroud)

安装版本:

nokogiri (1.6.0)
roo (1.12.1)
rubyzip (1.0.0)
spreadsheet (0.8.9)
Run Code Online (Sandbox Code Playgroud)

在控制器中:

require 'roo'

module BatchOrderProcessing
  class DataFilesController < ApplicationController

    def create
      # some code here ...

      when ".xlsx"
        spreadsheet = Roo::Excelx.new(uploaded_io.path, nil, :ignore)
        header = spreadsheet.row(1)
        if # some validation stuff...
          puts "spreadsheet format inappropriate"
          redirect_to # some place
        end
        process_datafile(fname, spreadsheet)
        # more code …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rubyzip nokogiri ruby-on-rails-3

9
推荐指数
2
解决办法
6294
查看次数

如何使用nokogiri和rubyzip编辑docx

我正在使用rubyzip和nokogiri的组合来编辑.docx文件.我正在使用rubyzip来解压缩.docx文件,然后使用nokogiri来解析和更改word/document.xml文件的正文,但是我最后关闭rubyzip它会破坏文件而我无法打开它或者修理它.我在桌面上解压缩.docx文件并检查word/document.xml文件,并将内容更新为我更改为的内容,但所有其他文件都搞砸了.有人可以帮我解决这个问题吗?这是我的代码:

require 'rubygems'  
require 'zip/zip'  
require 'nokogiri'  
zip = Zip::ZipFile.open("test.docx")  
doc = zip.find_entry("word/document.xml")  
xml = Nokogiri::XML.parse(doc.get_input_stream)  
wt = xml.root.xpath("//w:t", {"w" => "http://schemas.openxmlformats.org/wordprocessingml/2006/main"}).first  
wt.content = "New Text"  
zip.get_output_stream("word/document.xml") {|f| f << xml.to_s}  
zip.close
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails docx rubyzip nokogiri

8
推荐指数
2
解决办法
4600
查看次数

Rubyzip:直接将zip文件导出到S3而不将tmpfile写入磁盘?

我有这个代码,它将一个zip文件写入磁盘,将其读回,上传到s3,然后删除该文件:

compressed_file = some_temp_path

Zip::ZipOutputStream.open(compressed_file) do |zos|
  some_file_list.each do |file|
    zos.put_next_entry(file.some_title)
    zos.print IO.read(file.path)
  end
end # Write zip file

s3 = Aws::S3.new(S3_KEY, S3_SECRET)
bucket = Aws::S3::Bucket.create(s3, S3_BUCKET)
bucket.put("#{BUCKET_PATH}/archive.zip", IO.read(compressed_file), {}, 'authenticated-read')

File.delete(compressed_file)
Run Code Online (Sandbox Code Playgroud)

这段代码已经可以使用,但我想要的是不再创建zip文件,以节省一些步骤.我想知道是否有办法将zipfile数据直接导出到s3而不必先创建一个tmp文件,读回来然后删除它?

ruby zip ruby-on-rails amazon-s3 rubyzip

8
推荐指数
1
解决办法
3719
查看次数

使用ruby流式处理并解压缩大型csv文件

我有问题需要下载,解压缩,然后逐行处理一个非常大的CSV文件.我认为让您了解文件的大小是有用的:

  • big_file.zip~700mb
  • big_file.csv~23gb

这是我想要发生的一些事情:

  • 在解压缩之前不必下载整个文件
  • 在解析csv行之前不必解压缩整个文件
  • 在完成所有这些操作时,不要耗尽非常多的内存/磁盘

我不知道这是否可能.这就是我的想法:

require 'open-uri'
require 'rubyzip'
require 'csv'

open('http://foo.bar/big_file.zip') do |zipped|
  Zip::InputStream.open(zipped) do |unzipped|
    sleep 10 until entry = unzipped.get_next_entry && entry.name == 'big_file.csv'
    CSV.foreach(unzipped) do |row|
      # process the row, maybe write out to STDOUT or some file
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我所知道的问题:

  • open-uri读取整个响应并将其保存到Tempfile这个大小的文件中.我可能需要Net::HTTP直接使用,但我不知道该怎么做,仍然得到一个IO.
  • 我不知道下载的速度有多快,或者Zip::InputStream我的工作方式是否正常.当它不是全部时,它可以解压缩一些文件吗?
  • 请问CSV.foreach用rubyzip的工作InputStream?它的行为是否足以File解析行?如果它想要读取但缓冲区是空的,它会变得怪异吗?

我不知道这是否是正确的做法.也许一些EventMachine解决方案会更好(虽然我以前从未使用过EventMachine,但如果它对这样的东西更好用,我就是为了它).

ruby csv io rubyzip net-http

8
推荐指数
1
解决办法
1708
查看次数

使用rubyzip将文件和嵌套目录添加到zipoutputstream

我正在努力让rubyzip将目录附加到zipoutputstream.(我想要输出流,所以我可以从rails控制器发送它).我的代码遵循以下示例:

http://info.michael-simons.eu/2008/01/21/using-rubyzip-to-create-zip-files-on-the-fly/

当修改为包含要添加的文件列表中的目录时,我收到以下错误:

任何帮助将不胜感激.

UPDATE

在尝试了一些解决方案后,我在zipruby上获得了最大的成功,它有一个干净的api和很好的例子:http://zipruby.rubyforge.org/.

ruby rubyzip

7
推荐指数
2
解决办法
1万
查看次数

zipruby或rubyzip?

我在rails网站上有一个ruby(rails 2.0.2,ruby 1.8.6),同时安装了rubyzip和zipruby,但它们在File.exists上有冲突吗?方法所以我想删除一个.关于最好的压缩api前进的普遍共识是什么?

一个是否有显着的优势?

ruby ruby-on-rails rubyzip

6
推荐指数
2
解决办法
6188
查看次数

使用 ruby​​zip 压缩并在 Windows 上解压后,Xlsx 文件在 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_COMPRESSIONruby​​zip,但尽管如此,我还是遇到了同样的问题。另外,在某些地方,甚至在自述文件中,如果 ruby​​zip 我发现我们可以使用:

改用write_bufferopen

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

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

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

ruby ruby-on-rails rubyzip ruby-on-rails-3 axlsx

6
推荐指数
0
解决办法
676
查看次数

标签 统计

rubyzip ×10

ruby-on-rails ×7

ruby ×6

ruby-on-rails-3 ×4

nokogiri ×2

rubygems ×2

amazon-s3 ×1

axlsx ×1

csv ×1

docx ×1

io ×1

net-http ×1

zip ×1