Problema
Quiero devolver un archivo en mi controlador de API web ASP.Net, pero todos mis enfoques devuelven HttpResponseMessagecomo JSON.
Código hasta ahora
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;
}
Cuando llamo a este punto final en mi navegador, la API web devuelve HttpResponseMessagecomo JSON con el Encabezado de contenido HTTP establecido en application/json.
c#
asp.net-core
.net-core
asp.net-core-webapi
Jan Kruse
fuente
fuente

return File(stream, "application/octet-stream", "filename.xlsx");esta manera, cuando se descarga, el usuario puede abrirlo directamente.NotFound()finalmente hace, pero ¿reside en .NET Core o es algo local para su proyecto?ControllerBasey forma parte del marco en sí mismo docs.microsoft.com/en-us/dotnet/api/…Controllerpor lo tanto, no tenía acceso alControllerBase.NotFound()método. Una vez derivado, todo funcionó. lol / thxPuede devolver FileResult con estos métodos:
fuente
ControllerBasehay muchas versiones sobrecargadas deControllerBase.Fileayuda que devuelve cualquiera de ellas.Aquí hay un ejemplo simplista de transmisión de un archivo:
Nota:
Asegúrese de usar
FileStreamResultdesdeMicrosoft.AspNetCore.Mvcy no desdeSystem.Web.Mvc.fuente