前端GET/POST请求下载文件多种方式代码示例

 更新时间:2024年06月26日 09:57:42   作者:miao_0923  
文件都是通过接口获取的,前端通过调用接口将接口返回的文件下载,下面这篇文章主要给大家介绍了关于前端GET/POST请求下载文件的多种方式,文中通过代码介绍的非常详细,需要的朋友可以参考下

下载post

export const download = (data, projectId) => {
  return request({
    url: BaseUrl + '/xxx/xxx/xxx',
    headers: {
      "Project-Id": projectId,
      httpWhite: true,
    },
    responseType: "blob",//文件流
    method: 'post',
    data
  })
}
<el-button size="small" type="primary" class="downLoadTemplate" @click="downloadFile(row)">
    <i class="iconfont yun-xiazai"></i>
    <span class="first">下载数据模板</span>
</el-button>
//点击下载
const downloadFile(row){
  const params = {
    需要传递的参数:'xxxx',
    id:row.id,  //示例,
  }  
  download(params, this.projectIds).then((res) => {
    if (res.status === 200) {
      this.downloadDataTemplate(res);
    }
  });
}

//下载数据模板
downloadDataTemplate(res) {
  if (!res.data) {
    return;
  }
  const fileName = decodeURIComponent(
    res.headers["content-disposition"].split("filename=")[1]
  );
  const blob = new Blob([res.data], {
    type: "application/vnd.openxmlformats-  officedocument.spreadsheetml.sheet;charset=utf-8",
  });
  const downloadElement = document.createElement("a");
  const href = window.URL.createObjectURL(blob); // 创建下载的链接
  downloadElement.href = href;
  // 文件名中有中文 则对文件名进行转码
  downloadElement.download = fileName; // 下载后文件名
  document.body.appendChild(downloadElement);
  downloadElement.click(); // 点击下载
  document.body.removeChild(downloadElement); // 下载完成移除元素
  window.URL.revokeObjectURL(href); // 释放blob对象
},

Get下载方法

通用get下载方法 99%可以使用

const downError = `BaseUrl+/xxx/xxx/xxxx?${this.tokenHeader}=${getToken()}&projectId=${this.projectId}&spaceId=${this.spaceId}`;

window.open(downError, "_self");//调用window方法

特殊get下载方法 1%才能用到 一般用不到 (仅用于个人记录)

这种使用于需要在hearder里面添加projecrt-Id等参数 一般的都不需要 主要看后端接口能不能使用

使用下面这种方法 最主要get下载的请求 是responseType:blob 文件流

export const exportPersonnel = (params) => request({
  url: BaseUrl + '/exportxxx/xxxx',
  headers: {
    "Project-Id": params.projectId,
  },
  method: 'get',
  responseType: 'blob',		//文件流方法
  params,
})
// 导出
exportcustomer() {
  let downStr = { ...this.params };
  exportPersonnel(downStr).then((r) => {
    if (r.status === 200) {
      //获取下载文件名 
      const fileName = decodeURIComponent(
        r.headers["content-disposition"].split("filename=")[1]
      );
      // 创建 a 元素
      const link = document.createElement('a');
      const href = window.URL.createObjectURL(r.data)//创建下载链接
      link.href = href;// 设置下载链接的 URL
      link.style.display = "none";

      link.download = fileName; // 下载后文件名
      document.body.appendChild(link);
      link.click(); // 点击下载
      document.body.removeChild(link); // 下载完成移除元素
      window.URL.revokeObjectURL(href); // 释放blob对象
    }
  });
},

总结 

到此这篇关于前端GET/POST请求下载文件多种方式的文章就介绍到这了,更多相关前端GET/POST请求下载文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript实现的伸展收缩型菜单代码

    JavaScript实现的伸展收缩型菜单代码

    这篇文章主要介绍了JavaScript实现的伸展收缩型菜单代码,可实现JavaScript响应鼠标事件动态遍历及修改页面元素属性的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Javascript实现的类似Google的Div拖动效果代码

    Javascript实现的类似Google的Div拖动效果代码

    Javascript实现的类似Google的Div拖动效果代码,需要的朋友可以参考下。
    2011-08-08
  • JavaScript阻止事件冒泡和默认行为的方法举例

    JavaScript阻止事件冒泡和默认行为的方法举例

    JavaScript事件的默认行为指浏览器自动执行的操作,如链接跳转或表单提交,阻止这些行为可以使用event.preventDefault()、return false或event.returnValue属性,event.stopPropagation()用于阻止事件传播,不直接阻止默认行为,需要的朋友可以参考下
    2024-10-10
  • 微信小程序 轮播图实现原理及优化详解

    微信小程序 轮播图实现原理及优化详解

    这篇文章主要介绍了微信小程序 轮播图实现原理及优化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • js实现图片上传并正常显示

    js实现图片上传并正常显示

    这篇文章主要介绍了js实现图片上传并正常显示,我们经常遇到上传照片的情况,如何实现图片上传,本文为大家进行揭晓,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • ES6新特性之Object的变化分析

    ES6新特性之Object的变化分析

    这篇文章主要介绍了ES6新特性之Object的变化,结合具体实例形式分析了ES6中Object对象定义与使用方法的变化,需要的朋友可以参考下
    2017-03-03
  • 完美实现bootstrap分页查询

    完美实现bootstrap分页查询

    这篇文章主要介绍了一个完美的bootstrap分页查询,如何利用bootstrap实现分页查询,本文将为大家进行揭晓
    2015-12-12
  • 浅谈JS的二进制家族

    浅谈JS的二进制家族

    事实上,前端很少涉及对二进制数据的处理,但即便如此,我们偶尔总能在角落里看见它们的身影。 今天我们就来聊一聊前端的二进制家族:Blob、ArrayBuffer和Buffer
    2021-05-05
  • 微信小程序实现侧边栏分类

    微信小程序实现侧边栏分类

    这篇文章主要为大家详细介绍了微信小程序实现侧边栏分类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • layer页面跳转,获取html子节点元素的值方法

    layer页面跳转,获取html子节点元素的值方法

    今天小编就为大家分享一篇layer页面跳转,获取html子节点元素的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09

最新评论