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
Barbara Streisandoriginal
2025-01-18 17:41:09245parcourir

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>

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!

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