Maison > développement back-end > C++ > Comment renvoyer des fichiers sous forme de ByteContent dans l'API Web ASP.NET ?

Comment renvoyer des fichiers sous forme de ByteContent dans l'API Web ASP.NET ?

Patricia Arquette
Libérer: 2025-01-18 17:36:11
original
210 Les gens l'ont consulté

How to Return Files as ByteContent in ASP.NET Web API?

Renvoi de fichiers sous forme de tableaux d'octets dans l'API Web ASP.NET

Cet article montre comment renvoyer efficacement des fichiers sous forme de tableaux d'octets dans une API Web ASP.NET. Le FileContentResult, couramment utilisé dans MVC, n'est pas directement applicable ici.

Défi :

Le renvoi direct de fichiers PDF (ou d'autres types de fichiers) à partir d'un ApiController à l'aide de méthodes conçues pour MVC donne souvent des résultats inattendus.

Solution :

La clé est de gérer le fichier comme un tableau d'octets. Cela implique plusieurs étapes :

  1. Conversion de flux en tableau d'octets : Lisez le fichier dans un flux, puis convertissez ce flux en tableau d'octets.

  2. Création de ByteArrayContent : Utilisez la classe ByteArrayContent en transmettant le tableau d'octets obtenu à l'étape précédente.

  3. Gestion des en-têtes : Définissez correctement l'en-tête Content-Disposition pour spécifier le nom du fichier à télécharger et l'en-tête Content-Type pour identifier correctement le type de fichier (par exemple, "application/pdf" pour les PDF).

  4. Construction HttpResponseMessage : Packagez le ByteArrayContent dans un objet HttpResponseMessage, en définissant le code d'état HTTP approprié (par exemple, HttpStatusCode.OK).

Exemple de code :

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    using (var stream = new MemoryStream())
    {
        // ... Your file stream processing here ...  Populate the 'stream'

        var byteArray = stream.ToArray();
        var result = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(byteArray)
        };
        result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "CertificationCard.pdf"
        };
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // Or application/pdf

        return result;
    }
}</code>
Copier après la connexion

Cet exemple révisé montre comment renvoyer un fichier PDF (ou tout autre type de fichier) sous forme de tableau d'octets, avec les en-têtes nécessaires. Le client (navigateur) devrait désormais gérer correctement le téléchargement du fichier. N'oubliez pas de remplacer le commentaire d'espace réservé // ... Your file stream processing here ... par votre logique de lecture de fichier réelle. Pensez à utiliser des en-têtes Content-Type plus spécifiques pour une meilleure compatibilité avec les navigateurs.

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