jco*_*oby 6 ruby ruby-on-rails unzip rubyzip
我正在尝试提取上传的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
Run Code Online (Sandbox Code Playgroud)
如何设置ZipEntry中的数据?我必须使用临时文件吗?
jco*_*oby 10
找到一种更简单的方法:
asset.data = entry.get_input_stream.read
Run Code Online (Sandbox Code Playgroud)
您似乎可以像这样使用read_local_entry方法:
asset.data = entry.read_local_entry {|z| z.read }
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用此方法保存条目:
data = entry.extract "#{RAILS_ROOT}/#{entry.name}"
asset.data = File.read("#{RAILS_ROOT}/#{entry.name}")
Run Code Online (Sandbox Code Playgroud)
我不确定这些是如何工作的,但也许他们会帮助你找到合适的方法(如果不是这样的话).
而且,还有一个选择:
asset.data = zipfile.file.read(entry.name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6700 次 |
| 最近记录: |