Heim >Backend-Entwicklung >C++ >Wie gebe ich Dateien als ByteContent in der ASP.NET-Web-API zurück?
Dateien als Byte-Arrays in der ASP.NET-Web-API zurückgeben
In diesem Artikel wird gezeigt, wie Sie Dateien effektiv als Byte-Arrays innerhalb einer ASP.NET-Web-API zurückgeben. Das in MVC häufig verwendete FileContentResult
ist hier nicht direkt anwendbar.
Herausforderung:
Die direkte Rückgabe von PDF-Dateien (oder anderen Dateitypen) von einem ApiController
mithilfe von für MVC entwickelten Methoden führt häufig zu unerwarteten Ergebnissen.
Lösung:
Der Schlüssel besteht darin, die Datei als Byte-Array zu behandeln. Dies umfasst mehrere Schritte:
Konvertierung von Stream in Byte-Array: Lesen Sie die Datei in einen Stream und konvertieren Sie diesen Stream dann in ein Byte-Array.
ByteArrayContent-Erstellung: Verwenden Sie die Klasse ByteArrayContent
und übergeben Sie das im vorherigen Schritt erhaltene Byte-Array.
Header-Verwaltung: Legen Sie den Content-Disposition
-Header richtig fest, um den Dateinamen für den Download anzugeben, und den Content-Type
-Header, um den Dateityp korrekt zu identifizieren (z. B. „application/pdf“ für PDFs).
HttpResponseMessage-Konstruktion: Packen Sie das ByteArrayContent
in ein HttpResponseMessage
-Objekt und legen Sie den entsprechenden HTTP-Statuscode fest (z. B. HttpStatusCode.OK
).
Codebeispiel:
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // ... Your file stream processing here ... Populate the 'stream' var byteArray = stream.ToArray(); var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(byteArray) }; result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "CertificationCard.pdf" }; result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); // Or application/pdf return result; } }</code>
Dieses überarbeitete Beispiel zeigt, wie eine PDF-Datei (oder ein beliebiger Dateityp) als Byte-Array zurückgegeben wird, komplett mit den erforderlichen Headern. Der Client (Browser) sollte den Dateidownload nun korrekt verarbeiten. Denken Sie daran, den Platzhalterkommentar // ... Your file stream processing here ...
durch Ihre tatsächliche Dateileselogik zu ersetzen. Erwägen Sie die Verwendung spezifischerer Content-Type
-Header für eine bessere Browserkompatibilität.
Das obige ist der detaillierte Inhalt vonWie gebe ich Dateien als ByteContent in der ASP.NET-Web-API zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!