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

Comment renvoyer correctement des fichiers dans l'API Web ASP.NET ?

Barbara Streisand
Libérer: 2025-01-18 17:41:09
original
243 Les gens l'ont consulté

How to Properly Return Files in ASP.NET Web API?

Renvoie correctement les fichiers dans l'API Web ASP.NET

Dans ASP.NET MVC, renvoyer des fichiers est très simple en utilisant la classe FileContentResult. Cependant, lors de l’utilisation de WebAPI, l’approche est différente.

Adapter à WebAPI

WebAPI utilise différentes conventions et nécessite différents types de retour. Pour adapter la méthode Test d'un contrôleur MVC normal à un contrôleur API, nous devons renvoyer IHttpActionResult au lieu de FileContentResult.

Tentatives initiales et problèmes

La tentative initiale a utilisé la classe StreamContent pour renvoyer un flux de fichiers. Bien que le type et la longueur du contenu soient définis, seul l'en-tête est affiché dans le navigateur.

Solution : ByteArrayContent

Le problème est que StreamContent ne fonctionne pas avec le contenu déjà lu depuis le flux. Au lieu de cela, nous devrions utiliser ByteArrayContent, qui prend en entrée un tableau d'octets d'un flux.

Code modifié :

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    var stream = new MemoryStream();
    // 处理流。

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

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

Ce code modifié renvoie correctement le contenu du fichier en réponse, permettant le téléchargement ou l'affichage 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