首頁 >後端開發 >C++ >如何在 ASP.Net Core Web API 中以二進位回應形式傳回檔案?

如何在 ASP.Net Core Web API 中以二進位回應形式傳回檔案?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-29 08:39:02378瀏覽

How Can I Return a File as a Binary Response in ASP.Net Core Web API?

克服 ASP.Net Core Web API 中的 JSON 轉換檔案回傳問題

在 ASP.Net Core Web API 中,可以將檔案當作 JSON 回應傳回麻煩。可以理解的是,您希望以原始二進位格式傳回檔案。為了解決這個問題,我們需要深入研究 ASP.Net Core 中結果類型的概念。

理解 IActionResult 介面

在 ASP.Net Core 中,IActionResult是一個表示操作方法結果的介面。它封裝了 HTTP 回應正文和狀態代碼,為自訂回應提供了靈活性。

解決方案:傳回 FileStreamResult

要傳回文件,我們將利用FileStreamResult 類,它實作 IActionResult。這允許我們指定回應的檔案流、內容類型和檔案名稱。

以下程式碼片段示範了這個方法:

<code class="csharp">[Route("api/[controller]")]
public class DownloadController : Controller
{
    [HttpGet("{id}")]
    public async Task<IActionResult> Download(string id)
    {
        Stream stream = await // Get stream based on id here

        if (stream == null)
            return NotFound(); // Handle not found scenario

        return File(stream, "application/octet-stream", "filename.ext");
    }
}</code>

在此程式碼中:

  • File() 使用指定的串流、內容類型和檔案名創建FileStreamResult。
  • 框架會自動將 HTTP 回應狀態碼設定為 200 OK。
  • 框架處理回應完成時流以避免異常。

注意:

  • 如果在Download 方法中對流使用using 語句,該流可能會在發送回應之前被釋放,從而導致錯誤。
  • NotFound() 呼叫傳回一個 NotFoundResult,其 HTTP 狀態碼為 404 Not Found。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn