C# 将Zip文件作为流写入AWS

C# 将Zip文件作为流写入AWS,c#,.net,amazon-s3,C#,.net,Amazon S3,使用C#,我想在AWS S3中创建一个zip文件,向其中添加文件条目,然后关闭流。System.IO.Compression.ZipArchive可以从System.IO.Stream创建。是否可以将可写流放入S3存储桶?我正在使用用于S3的.NET SDK。当请求发出时,上载到S3的对象必须具有已知大小。因为直到流关闭后才知道zip文件的大小,所以您无法执行所要求的操作。您必须在本地创建zip文件,然后将其上载到S3 最接近您所要求的是使用S3的多部分上传。我会使用MemoryStream作为

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

当请求发出时,上载到S3的对象必须具有已知大小。因为直到流关闭后才知道zip文件的大小,所以您无法执行所要求的操作。您必须在本地创建zip文件,然后将其上载到S3


最接近您所要求的是使用S3的多部分上传。我会使用MemoryStream作为ZipArchive的底层流,每次向zip存档添加文件时,都会检查MemoryStream是否大于5 MB。如果是,则从MemoryStream获取字节缓冲区,并将新部分上载到S3。然后清除MemoryStream并继续向zip存档添加文件

您可能想看看关于此的现有讨论


这似乎表明有一种上传方法可以接收流(S3负责重新组装多部分上传)。虽然这是针对版本1的,所以在版本3中可能不可用。

所以,问题实际上与Zip文件无关。它是“我可以将流写入S3存储桶吗”?如果你不能直接写,我猜你可以把一个
字节[]
写进一个。如果是这样,您可以使用
MemoryStream