【发布时间】:2019-07-03 11:14:58
【问题描述】:
我必须从 aws S3 async 下载文件。我有一个锚标签,单击它时,控制器中将点击一个方法以供下载。该文件应该在浏览器底部开始下载,就像其他文件下载一样。
在视图中
<a href="/controller/action?parameter">Click here</a>
在控制器中
public void action()
{
try
{
AmazonS3Client client = new AmazonS3Client(accessKeyID, secretAccessKey);
GetObjectRequest req = new GetObjectRequest();
req.Key = originalName;
req.BucketName = ConfigurationManager.AppSettings["bucketName"].ToString() + DownloadPath;
FileInfo fi = new FileInfo(originalName);
string ext = fi.Extension.ToLower();
string mimeType = ReturnmimeType(ext);
var res = client.GetObject(req);
Stream responseStream = res.ResponseStream;
Stream response = responseStream;
return File(response, mimeType, downLoadName);
}
catch (Exception)
{
failure = "File download failed. Please try after some time.";
}
}
上述功能使浏览器加载,直到文件完全下载。然后只有文件在底部可见。我看不到 mb 的下载方式。
提前致谢。
【问题讨论】:
-
尝试在
return之前添加Response.BufferOutput = false;。这将禁用文件的服务器端缓冲。
标签: c# asp.net-mvc amazon-s3