首頁 > 後端開發 > C++ > 如何從 ASP.NET Web API 傳回 FileContentResult (PDF)?

如何從 ASP.NET Web API 傳回 FileContentResult (PDF)?

Patricia Arquette
發布: 2025-01-18 17:31:09
原創
886 人瀏覽過

How to Return a FileContentResult (PDF) from an ASP.NET Web API?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板