從ASP.NET Core Web API 傳回檔案可能具有挑戰性,因為預設行為通常會導致HttpResponseMessage 被序列化為JSON。為了解決這個問題,我們需要使用不同的方法。
在提供的程式碼片段中,應該使用 IActionResult 介面傳回派生的 ActionResult 類型。透過傳回 FileStreamResult,我們可以指定要下載的檔案的內容類型和檔案名稱。
<code class="csharp">[Route("api/[controller]")] public class DownloadController : Controller { [HttpGet("{id}")] public async Task<IActionResult> Download(string id) { Stream stream = await GetStreamBasedOnIdAsync(id); if (stream == null) return NotFound(); return File(stream, "application/octet-stream", $"{filename}.ext"); } }</code>
在此更新的程式碼中:
此方法可確保 HttpResponseMessage 包含正確的內容類型和檔案名,允許從您的 Web API 無縫下載檔案。
以上是如何從 ASP.NET Core Web API 傳回檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!