Problem
Ich möchte eine Datei in meinem ASP.Net Web API Controller zurückgeben, aber alle meine Ansätze geben die HttpResponseMessage
als JSON zurück.
Code bisher
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;
}
Wenn ich diesen Endpunkt in meinem Browser aufrufe, gibt die Web-API den Wert HttpResponseMessage
als JSON mit dem HTTP-Inhaltsheader zurück application/json
.
c#
asp.net-core
.net-core
asp.net-core-webapi
Jan Kruse
quelle
quelle
return File(stream, "application/octet-stream", "filename.xlsx");
diese Weise kann der Benutzer es beim Herunterladen direkt öffnen.NotFound()
letztendlich bewirkt, aber befindet es sich in .NET Core oder ist es etwas Lokales für Ihr Projekt?ControllerBase
und ist Teil des Frameworks selbst docs.microsoft.com/en-us/dotnet/api/…Controller
und hatte daher keinen Zugriff auf dieControllerBase.NotFound()
Methode. Einmal abgeleitet, hat alles funktioniert. lol / thxSie können FileResult mit folgenden Methoden zurückgeben:
quelle
ControllerBase
viele überladene Versionen vonControllerBase.File
helper vorhanden sind, die eine dieser Versionen zurückgeben .Hier ist ein vereinfachtes Beispiel für das Streaming einer Datei:
Hinweis:
Verwenden Sie unbedingt
FileStreamResult
vonMicrosoft.AspNetCore.Mvc
und nicht vonSystem.Web.Mvc
.quelle