Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich in der ASP.Net Core-Web-API eine Datei anstelle von JSON zurückgeben?

Susan Sarandon
Freigeben: 2024-11-04 07:04:30
Original
364 Leute haben es durchsucht

How to Return a File Instead of JSON in ASP.Net Core Web API?

Zurückgeben einer Datei in der ASP.Net Core-Web-API

Problem:

Beim Versuch, eine Datei in einem zurückzugeben ASP.Net Core Web API-Controller, die HttpResponseMessage wird als JSON mit einem Anwendungs-/JSON-Inhaltsheader und nicht als Datei zurückgegeben.

Codeversuch:

public async Task<HttpResponseMessage> DownloadAsync(string id)
{
    var response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new StreamContent({{__insert_stream_here__}});
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    return response;
}
Nach dem Login kopieren

Ursache:

Die HttpResponseMessage wird vom Web-API-Framework als Modell behandelt, da sie von einer Aktion zurückgegeben wird, die mit dem Attribut [HttpGet] versehen ist.

Lösung:

Um eine Datei korrekt zurückzugeben, ändern Sie die Controller-Aktion, um ein IActionResult zurückzugeben:

[Route("api/[controller]")]
public class DownloadController : Controller
{
    //GET api/download/12345abc
    [HttpGet("{id}")]
    public async Task<IActionResult> Download(string id)
    {
        Stream stream = await {{__get_stream_based_on_id_here__}};

        if(stream == null)
            return NotFound(); // returns a NotFoundResult with Status404NotFound response.

        return File(stream, "application/octet-stream", "{{filename.ext}}"); // returns a FileStreamResult
    }    
}
Nach dem Login kopieren

Hinweis:

Das Framework entsorgt den verwendeten Stream, nachdem die Antwort abgeschlossen ist. Die Verwendung einer using-Anweisung zum Löschen des Streams vor dem Senden der Antwort führt zu einer Ausnahme oder einer beschädigten Antwort.

Das obige ist der detaillierte Inhalt vonWie kann ich in der ASP.Net Core-Web-API eine Datei anstelle von JSON 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!