Maison > Article > développement back-end > Comment renvoyer des fichiers à partir d’un contrôleur 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 :
<code class="csharp">[Route("api/[controller]")] public class DownloadController : Controller { // GET api/download/12345abc [HttpGet("{id}")] public async Task<IActionResult> 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 } }</code>
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.
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!