1
我的情况的短版是我读出存储在Amazon的S3与.NET SDK文件...从AWS S3读取流涉及加载整个文件
GetObjectRequest request = new GetObjectRequest
{
BucketName = this.m_bucketName,
Key = GetFileKey(fileIdentifier),
};
IAmazonS3 source = ...
GetObjectResponse response = await source.GetObjectAsync(request);
return response.ResponseStream;
我再通过通过这个流以MVC为File
结果
public async Task<FileResult> Download(...)
{
return File(GetAwsStream(...), ...);
}
问题是,显然S3被返回任何东西之前,急切地计算整个文件的校验和。对于大文件,这是因为
- Web服务器必须下载从AWS S3整个文件的单个字节之前可以开始流传输到客户端显著的问题;对于大文件之前,Web服务器响应客户端可能需要几分钟
- 它使用一吨的存储在Web服务器上读取整个流,并计算校验
这完全违背了点流。有没有办法从S3获得实际的“流”?
我遇到同样的问题。我可以在流上调用'.ToArray()'来获取内容,但我似乎无法使用'return File(stream,contentType,fileName);'因为下载时文件中没有包含任何内容。 – Jecoms