Bereitstellen von Dateien von ASP.NET-Web-API-Controllern
Während MVC-Controller FileContentResult
problemlos zum Senden von Dateien wie PDFs verwenden, erfordert ApiControllers
einen anderen Ansatz. Der typische Rückgabetyp IHttpActionResult
ist nicht für die Dateiübermittlung konzipiert.
Behebung häufiger Fallstricke
Die direkte Verwendung von StreamContent
schlägt häufig fehl und führt dazu, dass der Browser Metadaten anstelle der eigentlichen Datei anzeigt.
Die effektive ByteArrayContent
Methode
Die zuverlässigste Methode besteht darin, die Datei in ein Byte-Array zu konvertieren und ByteArrayContent
zu verwenden. Dies gewährleistet eine ordnungsgemäße Dateizustellung.
Codebeispiel: Zurückgeben einer PDF
Dieses Beispiel zeigt die Erstellung und Rückgabe einer PDF-Datei aus einem ApiController
:
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // ... PDF generation logic using stream ... 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>
Dieser Ansatz garantiert eine erfolgreiche Dateibereitstellung und ermöglicht es Clients (Browsern oder anderen API-Konsumenten), die Datei korrekt herunterzuladen und anzuzeigen.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateien (z. B. PDFs) von ASP.NET-Web-API-Controllern zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!