"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo devolver un resultado de contenido de archivo de una API web ASP.NET?

¿Cómo devolver un resultado de contenido de archivo de una API web ASP.NET?

Publicado el 2025-03-22
Navegar:851

How to Return a File Content Result from an ASP.NET Web API?

El contenido del archivo de devolución da como resultado ASP.NET Web API

while fileContentResult funciona bien en los controladores MVC para servir archivos como PDFS, portando directamente esto a un apicontroller presenta desafíos. Un simple intento de usar streamContent a menudo falla, lo que resulta en metadatos JSON en lugar del archivo en sí. La solución se encuentra en apalancamiento byteArrayContent .

Este fragmento de código revisado devuelve efectivamente un archivo PDF como resultado de contenido de archivo de una API web:

[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;
    }
}

La clave es usar bytearrayContent para encapsular los bytes del archivo y configurar el encabezado contentDisPosition al "archivo adjunto" para solicitar una descarga. El encabezado contentType garantiza el manejo adecuado del cliente. Tenga en cuenta el uso de usando para garantizar que MemoryStream esté correctamente dispuesto. Este enfoque permite la entrega perfecta de PDF y otros tipos de archivos a través de su API web.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3