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.
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