c# - .Net Core - 如何从 ResponseStream 或 StreamReader 到实际下载前端的文件?
问题描述
我希望能够通过我的网络应用程序中的链接下载文件。我正在使用 Amazon S3 将文件存储在云中,并且能够使用此处的示例将它们检索到 ResponseStream 中:
https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingNetSDK.html
如何从拥有 ResponseStream 到实际能够在浏览器中下载文件?我不想把它下载到服务器上,我想把它下载到用户的下载文件夹中。我觉得我对如何做到这一点知之甚少,不知道从哪里开始。
string responseBody = "";
try
{
GetObjectRequest request = new GetObjectRequest
{
BucketName = bucketName,
Key = keyName
};
using (GetObjectResponse response = await client.GetObjectAsync(request))
using (Stream responseStream = response.ResponseStream)
using (StreamReader reader = new StreamReader(responseStream))
{
string contentType = response.Headers["Content-Type"];
responseBody = reader.ReadToEnd(); // Now you process the response body.
// I read the response to the end, how do I create a file and download it?
}
}
解决方案
如果流是你要返回的文件,直接返回流即可:
return File(responseStream, response.Headers["Content-Type"]);
using
但是请注意,在获取流时不应使用。ASP.NET Core 将在处理完流后处理它,但您需要它在操作范围之外持续存在。
推荐阅读
- c# - PrincipalContext 在连接到网络时搜索本地用户非常慢
- regex - 查找 URL 并提取其结尾
- c++ - 如何获取使用 Loader 加载的 ListModel 委托的索引?
- mysql - 如何根据 2 个表计算 mysql 中的数量
- r - 将线形文件转换为栅格图层并保留值
- java - 使用游标/过程/函数连接 2 个表
- jquery - Html nav 元素自行获取样式
- c# - WebView2如何运行Javascript函数?
- app-store-connect - 收到错误“需要承认 Apple 的 Apple ID 和隐私声明”。
- json - 如何使用 jq 或任何工具合并两个 JSON 文件?