首頁 > 後端開發 > C++ > 如何在 ASP.NET Web API 中以 ByteContent 形式傳回檔案?

如何在 ASP.NET Web API 中以 ByteContent 形式傳回檔案?

Patricia Arquette
發布: 2025-01-18 17:36:11
原創
257 人瀏覽過

How to Return Files as ByteContent in ASP.NET Web API?

在 ASP.NET Web API 中以位元組數組形式傳回檔案

本文示範如何在 ASP.NET Web API 中有效地將檔案作為位元組陣列傳回。 MVC 中常用的 FileContentResult 在這裡不直接適用。

挑戰:

使用為 MVC 設計的方法直接從 ApiController 傳回 PDF 檔案(或其他檔案類型)通常會產生意想不到的結果。

解:

關鍵是將檔案當作位元組陣列處理。 這涉及幾個步驟:

  1. 流到位元組數組轉換:將檔案讀入流,然後將該流轉換為位元組數組。

  2. ByteArrayContent 建立: 利用 ByteArrayContent 類,傳遞上一步驟所獲得的位元組數組。

  3. 標頭管理: 正確設定Content-Disposition 標頭以指定下載的檔案名,並設定Content-Type 標頭以正確識別檔案類型(例如,PDF 的「application/pdf」) 。

  4. HttpResponseMessage 建構:ByteArrayContent 封裝在 HttpResponseMessage 物件中,設定適當的 HTTP 狀態碼(例如 HttpStatusCode.OK)。

程式碼範例:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    using (var stream = new MemoryStream())
    {
        // ... Your file stream processing here ...  Populate the 'stream'

        var byteArray = stream.ToArray();
        var result = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(byteArray)
        };
        result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "CertificationCard.pdf"
        };
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // Or application/pdf

        return result;
    }
}</code>
登入後複製

這個修改後的範例展示如何以位元組數組的形式傳回 PDF 檔案(或任何檔案類型),並附帶必要的標頭。 客戶端(瀏覽器)現在應該正確處理文件下載。 請記得將佔位符註解 // ... Your file stream processing here ... 替換為您實際的檔案讀取邏輯。 考慮使用更具體的 Content-Type 標頭以獲得更好的瀏覽器相容性。

以上是如何在 ASP.NET Web API 中以 ByteContent 形式傳回檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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