"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment renvoyer des fichiers à partir d’un contrôleur API Web ASP.NET Core ?

Comment renvoyer des fichiers à partir d’un contrôleur API Web ASP.NET Core ?

Publié le 2024-11-09
Parcourir:291

How to Return Files from an ASP.NET Core Web API Controller?

Gestion des téléchargements de fichiers dans l'API Web ASP.NET Core

Lorsque vous essayez de renvoyer un fichier à partir d'un contrôleur d'API Web ASP.NET, vous pouvez rencontrer des problèmes avec le réponse étant traitée comme JSON. Pour résoudre ce problème, il est essentiel de comprendre l'approche correcte du téléchargement de fichiers dans ASP.NET Core.

Pour renvoyer un fichier dans l'API Web ASP.NET Core, vous devez renvoyer un IActionResult dérivé au lieu de HttpResponseMessage. Le framework interprétera HttpResponseMessage comme un modèle, conduisant au problème de réponse JSON.

Vous trouverez ci-dessous un exemple de code mis à jour qui montre comment renvoyer un fichier à l'aide de IActionResult :

[Route("api/[controller]")]
public class DownloadController : Controller
{
    // GET api/download/12345abc
    [HttpGet("{id}")]
    public async Task Download(string id)
    {
        Stream stream = await GetStreamBasedOnIdAsync(id);

        if (stream == null)
            return NotFound(); // Returns a NotFoundResult with Status404NotFound response

        return File(stream, "application/octet-stream", $"{FileName}.{FileExtension}"); // Returns a FileStreamResult
    }
}

Remarque : N'utilisez pas d'instruction using pour le flux ; sinon, il sera supprimé avant l'envoi de la réponse, ce qui entraînera une exception ou une réponse corrompue. Le framework gérera automatiquement la suppression du flux une fois la réponse terminée.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3