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