首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net核心-如何从ResponseStream或StreamReader转到真正在前端下载文件?

.Net核心-如何从ResponseStream或StreamReader转到真正在前端下载文件?
EN

Stack Overflow用户
提问于 2020-04-21 03:33:13
回答 1查看 265关注 0票数 1

我希望能够通过我的web应用程序中的链接下载文件。我正在使用亚马逊S3将文件存储在云中,并且能够使用下面的示例将它们检索到ResponseStream中:

https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingNetSDK.html

如何才能从拥有ResponseStream到真正能够在浏览器中下载文件?我不想将其下载到服务器,而是希望被下载到用户的downloads文件夹。我觉得我对如何做到这一点还不够了解,不知道从哪里开始。

代码语言:javascript
复制
            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?

                }
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-21 18:40:12

如果流是您想要返回的文件,则直接返回流即可:

代码语言:javascript
复制
return File(responseStream, response.Headers["Content-Type"]);

但是,请注意,在获取流时不应使用using。ASP.NET核心将在处理完流后负责处理它,但您需要它在操作范围之外持久化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61330572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档