在 ASP.NET Web API 中傳回檔案內容結果
雖然 FileContentResult
在 MVC 控制器中可以很好地提供 PDF 等文件,但直接將其移植到 ApiController
會帶來挑戰。 使用 StreamContent
的簡單嘗試通常會失敗,導致產生 JSON 元資料而不是檔案本身。 解決方案在於利用ByteArrayContent
。
此修改後的程式碼片段有效地傳回 PDF 檔案作為 Web API 的檔案內容結果:
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // Process the stream to generate PDF content here... var 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
封裝檔案的位元組,並將ContentDisposition
標頭設為「附件」以提示下載。 ContentType
標頭確保客戶端正確處理。 請注意使用 using
以確保 MemoryStream
正確處置。 這種方法可以透過 Web API 無縫交付 PDF 和其他文件類型。
以上是如何從 ASP.NET Web API 傳回文件內容結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!