Masalah
Saya ingin mengembalikan file di ASP.Net Web API Controller, tetapi semua pendekatan saya mengembalikan HttpResponseMessage
sebagai JSON.
Kode sejauh ini
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;
}
Saat saya memanggil titik akhir ini di browser saya, Web API mengembalikan HttpResponseMessage
sebagai JSON dengan HTTP Content Header disetel ke application/json
.
c#
asp.net-core
.net-core
asp.net-core-webapi
Jan Kruse
sumber
sumber
return File(stream, "application/octet-stream", "filename.xlsx");
Dengan cara ini ketika mengunduh pengguna dapat membukanya secara langsung.NotFound()
akhirnya dilakukan, tetapi apakah itu berada di .NET Core atau itu sesuatu yang lokal untuk proyek Anda?ControllerBase
dan merupakan bagian dari kerangka itu sendiri docs.microsoft.com/en-us/dotnet/api/…Controller
sehingga tidak memiliki akses keControllerBase.NotFound()
metode. Setelah diturunkan, semuanya berhasil. lol / thxAnda dapat mengembalikan FileResult dengan metode ini:
sumber
ControllerBase
ada banyak versiControllerBase.File
helper kelebihan beban yang mengembalikan salah satu dari versi tersebut.Berikut adalah contoh sederhana streaming file:
catatan:
Pastikan untuk menggunakan
FileStreamResult
dariMicrosoft.AspNetCore.Mvc
dan bukan dariSystem.Web.Mvc
.sumber