猿问

从 Axios 请求返回 ASP.NET Core API 中的下载文件

美好的一天,伙计们,


我正在尝试从 Axios 请求的 ASP.NET Core Web API 下载文件。


这是我的示例 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) })

但我只收到这个。没有下载文件出现。

我希望你能帮我从我的控制器 api 下载一个文件。



PIPIONE
浏览 99回答 2
2回答

喵喔喔

首先,DownloadFile 应该是 HttpGet 而不是 HttpPost。然后你的 axios 请求应该看起来像axios({&nbsp; url: 'http://localhost:5000/api/products/download',&nbsp; method: 'GET',&nbsp; responseType: 'blob', // important}).then((response) => {&nbsp; const url = window.URL.createObjectURL(new Blob([response.data]));&nbsp; const link = document.createElement('a');&nbsp; link.href = url;&nbsp; link.setAttribute('download', 'file.pdf');&nbsp; document.body.appendChild(link);&nbsp; link.click();});

人到中年有点甜

这是 :&nbsp; &nbsp; [HttpPost]&nbsp; &nbsp; [Route("")]&nbsp; &nbsp; public FileContentResult Download()&nbsp; &nbsp; {&nbsp;&nbsp; &nbsp; ...&nbsp;&nbsp; &nbsp; return File("thisFile");&nbsp;&nbsp; &nbsp; }
随时随地看视频慕课网APP
我要回答