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
Barbara StreisandOriginal
2025-01-18 17:41:09204Durchsuche

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>

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!

Stellungnahme:
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