Memulangkan Fail PDF daripada API Web ASP.NET
Dalam pengawal MVC standard, mengembalikan PDF menggunakan FileContentResult
adalah mudah. Walau bagaimanapun, ApiController
memerlukan pendekatan yang berbeza.
Masalahnya
Menggunakan IHttpActionResult
jenis pulangan biasa dalam ApiController
memberikan cabaran apabila mengembalikan PDF. Hanya mengembalikan StreamContent
, seperti yang dicadangkan oleh beberapa contoh, selalunya menyebabkan penyemak imbas memaparkan pengepala dan bukannya fail PDF itu sendiri.
Kaedah Yang Betul
Kuncinya ialah menggunakan ByteArrayContent
dan bukannya StreamContent
. Ini menukar data aliran kepada tatasusunan bait untuk penghantaran yang betul. Berikut ialah contoh yang dipertingkatkan:
<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>
Kod ini menggunakan ByteArrayContent
untuk menghantar PDF sebagai tatasusunan bait. Yang penting, ia menetapkan pengepala ContentDisposition
kepada attachment
(memberitahu penyemak imbas untuk memuat turun fail) dan ContentType
kepada application/octet-stream
(menunjukkan fail binari). Ini memastikan PDF dimuat turun dengan betul dan bukannya dipaparkan dalam penyemak imbas.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan FileContentResult (PDF) daripada API Web ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!