首页 > 后端开发 > C++ > 如何在 ASP.NET Web API 中正确返回文件?

如何在 ASP.NET Web API 中正确返回文件?

Barbara Streisand
发布: 2025-01-18 17:41:09
原创
200 人浏览过

How to Properly Return Files in ASP.NET Web API?

在ASP.NET Web API中正确返回文件

在ASP.NET MVC中,使用FileContentResult类返回文件非常简单。然而,在使用WebAPI时,方法有所不同。

适应WebAPI

WebAPI使用不同的约定,需要不同的返回类型。要将普通MVC控制器的Test方法改编为API控制器,我们需要返回IHttpActionResult而不是FileContentResult

初始尝试及问题

最初的尝试使用StreamContent类返回文件流。虽然设置了内容类型和长度,但浏览器中只显示了标头。

解决方案:ByteArrayContent

问题在于StreamContent不适用于已经从流中读取的内容。相反,我们应该使用ByteArrayContent,它以流的字节数组作为输入。

修改后的代码:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    var stream = new MemoryStream();
    // 处理流。

    var result = new HttpResponseMessage(HttpStatusCode.OK)
    {
        Content = new ByteArrayContent(stream.ToArray())
    };
    result.Content.Headers.ContentDisposition =
        new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
    {
        FileName = "CertificationCard.pdf"
    };
    result.Content.Headers.ContentType =
        new MediaTypeHeaderValue("application/octet-stream");

    return result;
}</code>
登录后复制

此修改后的代码正确地将文件内容作为响应返回,允许在浏览器中下载或显示。

以上是如何在 ASP.NET Web API 中正确返回文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板