我有这段代码,它将一个 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)
此代码已经有效,但我想要的是不再创建 zip 文件,以节省几个步骤。我想知道是否有一种方法可以将 zipfile 数据直接导出到 s3,而不必先创建一个 tmpfile,读回它,然后删除它?