将Zip文件作为流写入AWS

时间:2019-08-29 20:14:07

标签: c# .net amazon-s3

我想使用C#在AWS S3中创建一个zip文件,向其中添加文件条目,然后关闭流。可以从System.IO.Stream创建System.IO.Compression.ZipArchive。是否可以将可写的流放入S3存储桶?我正在使用.NET SDK FOR S3。

2 个答案:

答案 0 :(得分:1)

发出请求时,上传到S3的对象的大小必须已知。由于zip文件的大小在流关闭之前是未知的,因此您无法执行所要求的操作。您必须在本地创建zip文件,然后将其上传到S3。

使用S3的分段上传功能,您可以获得的最接近的要求。我将使用MemoryStream作为ZipArchive的基础流,每次将文件添加到zip存档时,请检查MemoryStream是否大于5兆字节。如果是,请从MemoryStream中获取字节缓冲区,然后将新的部分上传到S3。然后清除MemoryStream并继续将文件添加到zip存档中。

答案 1 :(得分:1)

您可能想看看this answer here上有关此问题的现有讨论。

这个doc page似乎暗示着存在一种可以上传数据流的Upload方法(S3负责重新组装分段上传)。尽管这是针对版本1的,所以在版本3中可能不可用。