以前很少接触文件下载的功能,昨天和后台开发人员联调下载功能出现了问题,一开始我请求接口,返回二进制文件流乱码,在网上找了方法,可以解决。后面后台开发人员改了一下,返回文件地址,然后就解决了。所以我了解的文件下载分为两种情况:

  一、后台直接给的文件地址(比如:xxx.xx.xx.xx/example.xls)

  这种情况的话js里直接:window.location.href="xxx.xx.xx.xx/example.xls" 即可, 或者用a标签也行。

  二、后台给接口,前端请求接口,返回二进制文件流

  这种情况需要处理二进制文件流,解决办法的大致思路如下:

    1.在请求里设置返回类型:responseType: ‘blob‘,这里也可以设置返回类型为arraybuffer,具体情况可以参考稍后贴出的参考博客;

    2.在请求的返回的中利用blob处理文件流;

  由于所参考的两篇博客写得已经比较详细,所以就不贴出具体的代码了,参考博客如下:

  1.vue2.x 下载后台传过来的流文件(excel)后乱码问题

  2.angular2/angular4 如何通过$http的post方法请求下载二进制的Excel文件

请原谅我的懒,哈哈哈