C# .Net Core-如何从ResponseStream或StreamReader实际下载前端的文件?

C# .Net Core-如何从ResponseStream或StreamReader实际下载前端的文件?,c#,asp.net-core,amazon-s3,C#,Asp.net Core,Amazon S3,我希望能够通过我的web应用程序中的链接下载文件。我使用Amazon S3将文件存储在云中,并能够使用以下示例将其检索到ResponseStream中: 如何从ResponseStream到能够在浏览器中下载文件?我不想将其下载到服务器,我想下载到用户的下载文件夹。我觉得我对如何做这件事知之甚少,不知道从哪里开始 string responseBody = ""; try { GetObje

我希望能够通过我的web应用程序中的链接下载文件。我使用Amazon S3将文件存储在云中,并能够使用以下示例将其检索到ResponseStream中:

如何从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将在处理完流后处理该流,但您需要它保持在操作范围之外。

这是否回答了您的问题?创建控制器操作和到您的操作的路由。这将是用户可以下载文件的URL。在您的操作中,您将获得示例中的数据流,并返回此处描述的内容:谢谢!“使用”是我的问题,你结束了几个小时的头痛。非常好,你这个小美人解决了我的问题!