Memulangkan Fail sebagai Tatasusunan Byte dalam API Web ASP.NET
Artikel ini menunjukkan cara mengembalikan fail sebagai tatasusunan bait dengan berkesan dalam API Web ASP.NET. FileContentResult
, yang biasa digunakan dalam MVC, tidak boleh digunakan secara langsung di sini.
Cabaran:
Memulangkan fail PDF (atau jenis fail lain) secara langsung daripada ApiController
menggunakan kaedah yang direka untuk MVC selalunya menghasilkan hasil yang tidak dijangka.
Penyelesaian:
Kuncinya ialah mengendalikan fail sebagai tatasusunan bait. Ini melibatkan beberapa langkah:
Penukaran Tatasusunan Strim ke Bait: Baca fail ke dalam strim dan kemudian tukar strim itu kepada tatasusunan bait.
ByteArrayContent Creation: Gunakan kelas ByteArrayContent
, melepasi tatasusunan bait yang diperoleh dalam langkah sebelumnya.
Pengurusan Pengepala: Tetapkan pengepala Content-Disposition
dengan betul untuk menentukan nama fail untuk dimuat turun dan pengepala Content-Type
untuk mengenal pasti jenis fail dengan betul (cth., "application/pdf" untuk PDF).
HttpResponseMessage Construction: Pakej ByteArrayContent
dalam objek HttpResponseMessage
, tetapkan kod status HTTP yang sesuai (cth., HttpStatusCode.OK
).
Contoh Kod:
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // ... Your file stream processing here ... Populate the 'stream' var byteArray = stream.ToArray(); var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(byteArray) }; result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "CertificationCard.pdf" }; result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // Or application/pdf return result; } }</code>
Contoh yang disemak ini mempamerkan cara mengembalikan fail PDF (atau sebarang jenis fail) sebagai tatasusunan bait, lengkap dengan pengepala yang diperlukan. Pelanggan (pelayar) kini harus mengendalikan muat turun fail dengan betul. Ingat untuk menggantikan ulasan pemegang tempat // ... Your file stream processing here ...
dengan logik pembacaan fail sebenar anda. Pertimbangkan untuk menggunakan pengepala Content-Type
yang lebih khusus untuk keserasian penyemak imbas yang lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Fail sebagai ByteContent dalam API Web ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!