Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengembalikan Fail (cth., PDF) daripada Pengawal API Web ASP.NET?

Bagaimana untuk Mengembalikan Fail (cth., PDF) daripada Pengawal API Web ASP.NET?

Susan Sarandon
Susan Sarandonasal
2025-01-18 17:22:09928semak imbas

How to Return Files (e.g., PDFs) from ASP.NET Web API Controllers?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn