a标签实现文件下载功能

简单的下载示例:

<a href="url"></a>

<img src="url" />

文件下载原理:

       java后台只能做到返回二进制流或文件给前端,最终在前端页面创建一个a,然后触发a的点击事件实现点击下载效果。

接口:

export function exportfile_goods(jsonobj){ // 导出商品文件
  return fetch({
    url:'/api/goods/manager/product/export',
    method: 'post',
    params:jsonobj,
    responseType: 'arraybuffer',
  });
}

调用接口:

exportfile_goods(params).then(res => {
  if(res.data){
    const filename = decodeURI(res.headers['content-disposition'].split(';')[1]).replace('filename=','');
    let blob = new Blob([res.data],{type: "application/vnd.ms-excel"});
    let a = document.createElement('a');
    a.download = filename;
    a.href = URL.createObjectURL(blob);
    a.click();
    URL.revokeObjectURL(a.href); // 释放URL 对象
    // document.body.removeChild(a);//dom元素找不到,报错
  }

后台返回的乱码文件流:

a标签实现文件下载功能

请求方式post/get 都可以

a标签实现文件下载功能