在 ASP.NET Web API 中返回文件内容结果
虽然 FileContentResult
在 MVC 控制器中可以很好地提供 PDF 等文件,但直接将其移植到 ApiController
会带来挑战。 使用 StreamContent
的简单尝试通常会失败,导致生成 JSON 元数据而不是文件本身。 解决方案在于利用ByteArrayContent
。
此修改后的代码片段有效地返回 PDF 文件作为 Web API 的文件内容结果:
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // Process the stream to generate PDF content here... 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>
关键是使用ByteArrayContent
封装文件的字节,并将ContentDisposition
标头设置为“附件”以提示下载。 ContentType
标头确保客户端正确处理。 请注意使用 using
以确保 MemoryStream
得到正确处置。 这种方法可以通过 Web API 无缝交付 PDF 和其他文件类型。
以上是如何从 ASP.NET Web API 返回文件内容结果?的详细内容。更多信息请关注PHP中文网其他相关文章!