Maison >développement back-end >C++ >Comment renvoyer des fichiers (par exemple, des PDF) à partir des contrôleurs d'API Web ASP.NET ?

Comment renvoyer des fichiers (par exemple, des PDF) à partir des contrôleurs d'API Web ASP.NET ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-18 17:22:09878parcourir

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

Servir des fichiers à partir de contrôleurs d'API Web ASP.NET

Alors que les contrôleurs MVC utilisent facilement FileContentResult pour envoyer des fichiers tels que des PDF, ApiControllers nécessitent une approche différente. Le type de retour IHttpActionResult typique n'est pas conçu pour la livraison de fichiers.

Résoudre les pièges courants

L'utilisation de StreamContent directement échoue souvent, ce qui conduit le navigateur à afficher des métadonnées au lieu du fichier réel.

La méthode ByteArrayContent efficace

La méthode la plus fiable consiste à convertir le fichier en tableau d'octets et à utiliser ByteArrayContent. Cela garantit une bonne livraison des fichiers.

Exemple de code : renvoyer un PDF

Cet exemple montre la génération et le renvoi d'un PDF à partir d'un 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>

Cette approche garantit une livraison réussie des fichiers, permettant aux clients (navigateurs ou autres consommateurs d'API) de télécharger et d'afficher le fichier correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn