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