用Ruby从S3解压缩CSV.Zip文件



我有一个rails应用程序,它从S3获取一个csv.zip文件。有没有一种方法可以流式传输s3文件,并使用RubyZip或其他gem动态解压缩它?我不想在内存中下载整个文件。

我正在使用一个块来下载S3对象。当您将一个块传递给#get_object时,从套接字中读取数据块时会产生数据块。

s3.get_object(bucket: 'bucket-name', key:'object-key') 
do |chunk|puts(chunk) 
end

当我尝试使用RubyZip解压缩区块时,会抛出一个错误:

Zip::File.open(chunk) do |zip_file| 
zip_file.each do |entry| 
puts(entry.get_input_stream.read) 
end

如果zlib试图解压缩一个多部分gz文件,它只能解压缩第一个区块。

zlib能够解压缩s3单个上传的文件。因此,如果您能够在应用程序中使用s3单部分上传与s3多部分上传,我建议您探索这条路线。

相关内容

最新更新