Возврат файла загрузки в ASP.NET Core API из запроса Axios - PullRequest
2 голосов
/ 13 марта 2019

Добрый день, ребята,

Я пытаюсь загрузить файл из ASP.NET Core Web API из Axios Request.

Вот мой пример метода API.(Код основан на этом вопросе stackoverflow )

[HttpPost("download")]
public async Task<IActionResult> DownloadFile(){
    ...
    return File(new MemoryStream(mypdfbyte), "application/octet-stream", "myfile.pdf");
}

Вот мой пример запроса axios.

axios.post(`api/products/download`).then(response=>{
    console.log(response.data)
}).catch(error=>{ console.log(error) })

Но я только получаю это.Файл для загрузки не появляется.

enter image description here

Надеюсь, вы можете помочь мне загрузить файл с моего контроллера api.

1 Ответ

4 голосов
/ 13 марта 2019

Прежде всего, DownloadFile должен быть HttpGet вместо HttpPost. Тогда ваш запрос axios должен выглядеть как

axios({
  url: 'http://localhost:5000/api/products/download',
  method: 'GET',
  responseType: 'blob', // important
}).then((response) => {
  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement('a');
  link.href = url;
  link.setAttribute('download', 'file.pdf');
  document.body.appendChild(link);
  link.click();
});
...