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.
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