Maison > développement back-end > C++ > Comment renvoyer un FileContentResult (PDF) à partir d'une API Web ASP.NET ?

Comment renvoyer un FileContentResult (PDF) à partir d'une API Web ASP.NET ?

Patricia Arquette
Libérer: 2025-01-18 17:31:09
original
886 Les gens l'ont consulté

How to Return a FileContentResult (PDF) from an ASP.NET Web API?

Renvoi d'un fichier PDF à partir d'une API Web ASP.NET

Dans les contrôleurs MVC standard, renvoyer un PDF à l'aide de FileContentResult est simple. Cependant, ApiController nécessite une approche différente.

Le problème

L'utilisation du type de retour IHttpActionResult typique dans ApiController présente des défis lors du retour d'un PDF. Le simple fait de renvoyer un StreamContent, comme le suggèrent certains exemples, entraîne souvent l'affichage par le navigateur des en-têtes au lieu du fichier PDF lui-même.

La bonne méthode

La clé est d'utiliser ByteArrayContent au lieu de StreamContent. Cela convertit les données du flux en un tableau d'octets pour une transmission correcte. Voici un exemple amélioré :

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    MemoryStream stream = new MemoryStream();
    // ... PDF generation code to populate the stream ...

    HttpResponseMessage 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>
Copier après la connexion

Ce code utilise ByteArrayContent pour envoyer le PDF sous forme de tableau d'octets. Surtout, il définit l'en-tête ContentDisposition sur attachment (indiquant au navigateur de télécharger le fichier) et le ContentType sur application/octet-stream (indiquant un fichier binaire). Cela garantit que le PDF est correctement téléchargé au lieu d'être affiché dans le navigateur.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal