首页 >后端开发 >C++ >如何从 ASP.NET Web API 返回 FileContentResult (PDF)?

如何从 ASP.NET Web API 返回 FileContentResult (PDF)?

Patricia Arquette
Patricia Arquette原创
2025-01-18 17:31:09888浏览

How to Return a FileContentResult (PDF) from an ASP.NET Web API?

从 ASP.NET Web API 返回 PDF 文件

在标准 MVC 控制器中,使用 FileContentResult 返回 PDF 很简单。 然而,ApiController需要不同的方法。

问题

IHttpActionResult 中使用典型的 ApiController 返回类型在返回 PDF 时会带来挑战。 正如一些示例所示,仅返回 StreamContent 通常会导致浏览器显示标题而不是 PDF 文件本身。

正确方法

关键是使用ByteArrayContent而不是StreamContent。这会将流数据转换为字节数组以便正确传输。 这是一个改进的示例:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    MemoryStream stream = new MemoryStream();
    // ... PDF generation code to populate the stream ...

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

    return result;
}</code>

此代码使用 ByteArrayContent 将 PDF 作为字节数组发送。 至关重要的是,它将 ContentDisposition 标头设置为 attachment(告诉浏览器下载文件),将 ContentType 设置为 application/octet-stream(表示二进制文件)。 这可确保正确下载 PDF,而不是在浏览器中呈现。

以上是如何从 ASP.NET Web API 返回 FileContentResult (PDF)?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn