首页 >后端开发 >C++ >如何从 ASP.NET Web API 控制器返回文件(例如 PDF)?

如何从 ASP.NET Web API 控制器返回文件(例如 PDF)?

Susan Sarandon
Susan Sarandon原创
2025-01-18 17:22:09928浏览

How to Return Files (e.g., PDFs) from ASP.NET Web API Controllers?

从 ASP.NET Web API 控制器提供文件

虽然 MVC 控制器很容易使用 FileContentResult 发送 PDF 等文件,但 ApiControllers 需要不同的方法。 典型的 IHttpActionResult 返回类型不是为文件传递而设计的。

解决常见陷阱

直接使用StreamContent经常会失败,导致浏览器显示元数据而不是实际文件。

有效的ByteArrayContent方法

最可靠的方法是将文件转换为字节数组并使用ByteArrayContent。这可确保正确的文件传送。

代码示例:返回 PDF

此示例演示从 ApiController 生成和返回 PDF:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    using (var stream = new MemoryStream())
    {
        // ... PDF generation logic using stream ...

        var 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>

这种方法保证了文件的成功交付,使客户端(浏览器或其他 API 使用者)能够正确下载和查看文件。

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

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