Heim > Artikel > Backend-Entwicklung > Wie gebe ich Dateien von einem ASP.NET Core-Web-API-Controller zurück?
Beim Versuch, eine Datei von einem ASP.NET-Web-API-Controller zurückzugeben, können Probleme mit dem auftreten Die Antwort wird als JSON behandelt. Um dieses Problem zu beheben, ist es wichtig, den richtigen Ansatz zum Herunterladen von Dateien in ASP.NET Core zu verstehen.
Um eine Datei in der ASP.NET Core-Web-API zurückzugeben, müssen Sie ein abgeleitetes IActionResult anstelle von HttpResponseMessage zurückgeben. Das Framework interpretiert HttpResponseMessage als Modell, was zum JSON-Antwortproblem führt.
Unten finden Sie ein aktualisiertes Codebeispiel, das zeigt, wie eine Datei mit IActionResult zurückgegeben wird:
<code class="csharp">[Route("api/[controller]")] public class DownloadController : Controller { // GET api/download/12345abc [HttpGet("{id}")] public async Task<IActionResult> Download(string id) { Stream stream = await GetStreamBasedOnIdAsync(id); if (stream == null) return NotFound(); // Returns a NotFoundResult with Status404NotFound response return File(stream, "application/octet-stream", $"{FileName}.{FileExtension}"); // Returns a FileStreamResult } }</code>
Hinweis:Verwenden Sie keine using-Anweisung für den Stream; Andernfalls wird es verworfen, bevor die Antwort gesendet wurde, was zu einer Ausnahme oder einer beschädigten Antwort führt. Das Framework übernimmt die Stream-Entsorgung automatisch, wenn die Antwort abgeschlossen ist.
Das obige ist der detaillierte Inhalt vonWie gebe ich Dateien von einem ASP.NET Core-Web-API-Controller zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!