从 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中文网其他相关文章!