AspNetCore Mvc всегда возвращает объект JSON - PullRequest
0 голосов
/ 15 октября 2018

Я столкнулся с проблемой в Asp Net Core.

Я не могу вернуть файл как данные BLOB-объектов, но не как объект JSON с закодированным содержимым в base64.

Вот мой кодв C #:

[Route("DownloadExcel")]
[HttpPost]
public async Task<FileContentResult> DownloadExcel([FromBody] Queries.In.Pages.Users.ExportToExcel.InModel model)
{
    //some logic to retrieve an array of bytes.
    var filename = $"myFile_{DateTime.Now:yyyyMMdd_hh_mm}.xlsx";
    return File(byteArray, "octet/stream", filename);
}

В Angular 6 сторона:

this.httpClient.post(url, model, {headers: headers, responseType: 'blob'} )
  .subscribe(res => {
       let blob = new Blob(["\ufeff", response], {type: 'octet/stream'});
       saveAs(blob, '111.xlsx');
   })

Какой результат я вижу на вкладке ответа моего браузера?enter image description here и заголовки: enter image description here

Что не так в моем проекте и как его изменить, чтобы получить большой двоичный объект, но не JSON?

Заранее спасибо!

1 Ответ

0 голосов
/ 16 октября 2018

В ASP.NET Core вам необходимо использовать IActionResult, если вы отправляете пользовательский ответ.Все остальные ответы будут сериализованы (по умолчанию JSON) и отправлены как тело ответа.

См. Ответ в Потоковая передача файлов в ASP.NET Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...