我在尝试从 amazon s3 流式传输文件时遇到问题。基本上,我的文件存储在 amazom s3 上,我无法提供对这些文件的直接访问,因为用户需要进行身份验证。我正在尝试找到一种流式传输文件的方法,而无需将每个文件从亚马逊下载到我的服务器上,然后从我的服务器下载到最终客户端。我只是希望能够直接流式传输文件,但似乎 .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];
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)