我的方案的简短版本是我正在使用.NET SDK读取存储在Amazon S3中的文件...
GetObjectRequest request = new GetObjectRequest
{
BucketName = this.m_bucketName,
Key = GetFileKey(fileIdentifier),
};
IAmazonS3 source = ...
GetObjectResponse response = await source.GetObjectAsync(request);
return response.ResponseStream;
然后我将此流作为File
结果
public async Task<FileResult> Download(...)
{
return File(GetAwsStream(...), ...);
}
问题是,显然S3在返回任何内容之前急切地计算整个文件的校验和。对于大文件,这是一个重要问题,因为
这完全打败了流的重点。有没有办法得到一个真正的&#34;流&#34;来自S3?
答案 0 :(得分:2)
您可以使用HTTP Range标头在循环中下载S3对象的特定字节,然后在下载后将这些字节传递给客户端。这样,Web服务器就不必等到检索完整个文件才能给客户端一些东西。