Menyajikan Fail daripada Pengawal API Web ASP.NET
Walaupun pengawal MVC mudah menggunakan FileContentResult
untuk menghantar fail seperti PDF, ApiControllers
memerlukan pendekatan yang berbeza. Jenis pemulangan IHttpActionResult
tipikal tidak direka untuk penghantaran fail.
Mengatasi Masalah Biasa
Penggunaan StreamContent
secara langsung selalunya gagal, menyebabkan penyemak imbas memaparkan metadata dan bukannya fail sebenar.
Kaedah ByteArrayContent
Yang Berkesan
Kaedah yang paling boleh dipercayai melibatkan penukaran fail kepada tatasusunan bait dan menggunakan ByteArrayContent
. Ini memastikan penghantaran fail yang betul.
Contoh Kod: Mengembalikan PDF
Contoh ini menunjukkan penjanaan dan pengembalian PDF daripada ApiController
:
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // ... PDF generation logic using stream ... 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>
Pendekatan ini menjamin penghantaran fail yang berjaya, membolehkan pelanggan (penyemak imbas atau pengguna API lain) memuat turun dan melihat fail dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Fail (cth., PDF) daripada Pengawal API Web ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!