"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como retornar um resultado de conteúdo de arquivo de uma API da Web ASP.NET?

Como retornar um resultado de conteúdo de arquivo de uma API da Web ASP.NET?

Postado em 2025-03-22
Navegar:758

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

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.

Tutorial mais recente Mais>

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