從 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中文網其他相關文章!