Renvoi des résultats du contenu du fichier dans l'API Web ASP.NET
Bien que FileContentResult
fonctionne bien dans les contrôleurs MVC pour servir des fichiers tels que des PDF, le porter directement sur un ApiController
présente des défis. Une simple tentative d'utilisation de StreamContent
échoue souvent, ce qui entraîne des métadonnées JSON au lieu du fichier lui-même. La solution réside dans la mise à profit de ByteArrayContent
.
Cet extrait de code révisé renvoie effectivement un fichier PDF en tant que résultat du contenu du fichier à partir d'une API Web :
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // Process the stream to generate PDF content here... var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(stream.ToArray()) }; result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "CertificationCard.pdf" }; result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return result; } }</code>
La clé utilise ByteArrayContent
pour encapsuler les octets du fichier et définit l'en-tête ContentDisposition
sur "pièce jointe" pour demander un téléchargement. L'en-tête ContentType
garantit une bonne manipulation par le client. Notez l'utilisation de using
pour vous assurer que le MemoryStream
est correctement éliminé. Cette approche permet une livraison transparente de PDF et d'autres types de fichiers via votre API Web.
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!