从amazon s3流式传输文件

我在尝试从amazon s3流式传输文件时遇到问题。 基本上,我有存储在amazom s3上的文件,我不能提供对这些文件的直接访问,因为用户需要进行身份validation。 我正在尝试找到一种流式传输文件的方法,而无需将每个文件从amazon下载到我的服务器上,然后从我的服务器下载到最终客户端。 我只是希望能够直接传输文件,但似乎.NET中的大多数流读取器类都不是这样做的。 如果我错了,请纠正我。

您可以通过服务器将文件从Amazon S3流式传输到客户端,而无需将文件下载到服务器,方法是打开Amazon S3文件的流,然后从中读取并在客户端流上写入(缓冲区缓冲区)。

示例代码:

byte[] buffer = new byte[BUFFER_SIZE]; GetObjectRequest getObjRequest = new GetObjectRequest().WithBucketName(Bucket_Name).WithKey(Object_Key); using (GetObjectResponse getObjRespone = amazonS3Client.GetObject(getObjRequest)) using (Stream amazonStream = getObjRespone.ResponseStream) { int bytesReaded = 0; Response.AddHeader("Content-Length", getObjRespone.ContentLength.ToString()); while ((bytesReaded = amazonStream.Read(buffer, 0, buffer.Length)) > 0 && Response.IsClientConnected) { Response.OutputStream.Write(buffer, 0, bytesReaded); Response.OutputStream.Flush(); buffer = new byte[BUFFER_SIZE]; } }