Heim > Backend-Entwicklung > C++ > Wie kann ich Dateien in der ASP.NET-Web-API ordnungsgemäß zurückgeben?

Wie kann ich Dateien in der ASP.NET-Web-API ordnungsgemäß zurückgeben?

Barbara Streisand
Freigeben: 2025-01-18 17:41:09
Original
243 Leute haben es durchsucht

How to Properly Return Files in ASP.NET Web API?

Gibt Dateien in der ASP.NET-Web-API korrekt zurück

In ASP.NET MVC ist die Rückgabe von Dateien mithilfe der Klasse FileContentResult sehr einfach. Bei der Verwendung von WebAPI ist der Ansatz jedoch anders.

An WebAPI anpassen

WebAPI verwendet unterschiedliche Konventionen und erfordert unterschiedliche Rückgabetypen. Um die Test-Methode eines normalen MVC-Controllers an einen API-Controller anzupassen, müssen wir IHttpActionResult anstelle von FileContentResult zurückgeben.

Erste Versuche und Probleme

Der erste Versuch verwendete die Klasse StreamContent, um einen Dateistream zurückzugeben. Obwohl Inhaltstyp und Länge festgelegt sind, wird im Browser nur der Header angezeigt.

Lösung: ByteArrayContent

Das Problem ist, dass StreamContent nicht mit Inhalten funktioniert, die bereits aus dem Stream gelesen wurden. Stattdessen sollten wir ByteArrayContent verwenden, das als Eingabe ein Byte-Array eines Streams verwendet.

Geänderter Code:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    var stream = new MemoryStream();
    // 处理流。

    var result = new HttpResponseMessage(HttpStatusCode.OK)
    {
        Content = new ByteArrayContent(stream.ToArray())
    };
    result.Content.Headers.ContentDisposition =
        new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
    {
        FileName = "CertificationCard.pdf"
    };
    result.Content.Headers.ContentType =
        new MediaTypeHeaderValue("application/octet-stream");

    return result;
}</code>
Nach dem Login kopieren

Dieser geänderte Code gibt den Dateiinhalt korrekt als Antwort zurück und ermöglicht so das Herunterladen oder Anzeigen im Browser.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateien in der ASP.NET-Web-API ordnungsgemäß zurückgeben?. 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