当前位置:  开发笔记 > 编程语言 > 正文

如何使用rubyzip库获取压缩文件的内容?

如何解决《如何使用rubyzip库获取压缩文件的内容?》经验,为你挑选了2个好方法。

我正在尝试提取上传的zip文件并将其内容存储在数据库中,每个文件一个条目.rubyzip库几乎没有有用的文档.

有一个资产表,其中包含键:字符串(文件名)和数据:二进制文件(文件内容).

我正在使用rubyzip库,并且已经做到了这一点:

Zip::ZipFile.open(@file_data.local_path) do |zipfile|
  zipfile.each do |entry|
    next if entry.name =~ /__MACOSX/ or entry.name =~ /\.DS_Store/ or !entry.file?

    asset = self.assets.build
    asset.key = entry.name
    asset.data = ??  # what goes here?
  end
end

如何设置ZipEntry中的数据?我必须使用临时文件吗?



1> jcoby..:

找到一种更简单的方法:

asset.data = entry.get_input_stream.read



2> Ivan..:

您似乎可以像这样使用read_local_entry方法:

asset.data = entry.read_local_entry {|z| z.read }

或者,您可以使用此方法保存条目:

data = entry.extract "#{RAILS_ROOT}/#{entry.name}"
asset.data = File.read("#{RAILS_ROOT}/#{entry.name}")

我不确定这些是如何工作的,但也许他们会帮助你找到合适的方法(如果不是这样的话).

而且,还有一个选择:

asset.data = zipfile.file.read(entry.name)

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有