Heim >Backend-Entwicklung >C++ >Wie kann ich eine Datei als binäre Antwort in der ASP.Net Core-Web-API zurückgeben?

Wie kann ich eine Datei als binäre Antwort in der ASP.Net Core-Web-API zurückgeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 08:39:02426Durchsuche

How Can I Return a File as a Binary Response in ASP.Net Core Web API?

Überwindung des Problems bei der Rückgabe JSON-konvertierter Dateien in der ASP.Net Core-Web-API

In der ASP.Net Core-Web-API kann die Rückgabe einer Datei als JSON-Antwort erfolgen lästig. Verständlicherweise möchten Sie die Datei in ihrem ursprünglichen Binärformat zurückgeben. Um dieses Problem zu lösen, müssen wir uns mit dem Konzept der Ergebnistypen in ASP.Net Core befassen.

Verstehen der IActionResult-Schnittstelle

In ASP.Net Core, IActionResult ist eine Schnittstelle, die das Ergebnis einer Aktionsmethode darstellt. Es kapselt den HTTP-Antworttext und den Statuscode und bietet so Flexibilität beim Anpassen der Antwort.

Lösung: Zurückgeben eines FileStreamResult

Um eine Datei zurückzugeben, nutzen wir die FileStreamResult-Klasse, die IActionResult implementiert. Dadurch können wir den Dateistream, den Inhaltstyp und den Dateinamen für die Antwort angeben.

Der folgende Codeausschnitt veranschaulicht diesen Ansatz:

<code class="csharp">[Route("api/[controller]")]
public class DownloadController : Controller
{
    [HttpGet("{id}")]
    public async Task<IActionResult> Download(string id)
    {
        Stream stream = await // Get stream based on id here

        if (stream == null)
            return NotFound(); // Handle not found scenario

        return File(stream, "application/octet-stream", "filename.ext");
    }
}</code>

In diesem Code:

  • File() erstellt ein FileStreamResult mit dem angegebenen Stream, Inhaltstyp und Dateinamen.
  • Das Framework setzt den HTTP-Antwortstatuscode automatisch auf 200 OK.
  • Das Framework verfügt über den Stream, wenn die Antwort vollständig ist, um Ausnahmen zu vermeiden.

Hinweis:

  • Wenn Sie innerhalb der Download-Methode eine using-Anweisung für den Stream verwenden , kann der Stream verworfen werden, bevor die Antwort gesendet wird, was zu einem Fehler führt.
  • Der NotFound()-Aufruf gibt ein NotFoundResult mit dem HTTP-Statuscode 404 Not Found zurück.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Datei als binäre Antwort in der ASP.Net Core-Web-API 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