Heim > Backend-Entwicklung > C++ > Wie gebe ich Dateien als ByteContent in der ASP.NET-Web-API zurück?

Wie gebe ich Dateien als ByteContent in der ASP.NET-Web-API zurück?

Patricia Arquette
Freigeben: 2025-01-18 17:36:11
Original
210 Leute haben es durchsucht

How to Return Files as ByteContent in ASP.NET Web API?

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:

  1. Konvertierung von Stream in Byte-Array: Lesen Sie die Datei in einen Stream und konvertieren Sie diesen Stream dann in ein Byte-Array.

  2. ByteArrayContent-Erstellung: Verwenden Sie die Klasse ByteArrayContent und übergeben Sie das im vorherigen Schritt erhaltene Byte-Array.

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

  4. 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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage