retornando o conteúdo do arquivo resulta em ASP.NET Web API
while FileContentResult
funciona bem nos controladores MVC para servir arquivos como o PDFS, portando diretamente isso para um apicontroller
apresenta desafios. Uma tentativa simples de usar Streamcontent
geralmente falha, resultando em metadados JSON em vez do próprio arquivo. A solução está em aproveitar bytearrayContent
.
Este snippet de código revisado retorna efetivamente um arquivo pdf como resultado do conteúdo do arquivo de uma API da 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;
}
}
A chave está usando byteArrayContent
para encapsular os bytes do arquivo e definir o cabeçalho contentDisposition
para "anexar" para solicitar um download. O cabeçalho contenttype
garante o manuseio adequado pelo cliente. Observe o uso de usando
para garantir que o MemoryStream
esteja corretamente disposto. Essa abordagem permite a entrega perfeita de PDFs e outros tipos de arquivos através da sua API da Web.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3