当前位置:   article > 正文

vue项目后台返回流文件下载和url下载_vue文件流下载后端文件

vue文件流下载后端文件

第一种后台返回url的下载

https://xxx/xxx20230801154328b4950ca6-c6f2-44f7-8466-fc6ca89ce166.xlsx

  1. let url = file;//这里是后台返回的url
  2. let a_link = document.createElement('a')
  3. // 这里是将url转成blob地址,
  4. fetch(url).then((res) => res.blob())
  5. .then((blob) => {
  6. // 将链接地址字符内容转变成blob地址
  7. a_link.href = URL.createObjectURL(blob)
  8. console.log(a_link.href)
  9. a_link.download = fileName + '.xlsx' //下载的文件的名字
  10. document.body.appendChild(a_link)
  11. a_link.click()
  12. })

第二种后台返回的是二进制流文件

 

  1. //请求流文件的方式
  2. axios({
  3. method: 'post',
  4. url: process.env.BASE_API + '/api/register/download',
  5. data: {
  6. "confirmFlg": true,
  7. "data": {},//上传的参数
  8. },
  9. headers: {
  10. Authorization: 'Bearer ' + this.$store.getters.token
  11. },
  12. responseType: 'blob' //非常重要不可少
  13. }).then(res => { // 后台返回的数据 res中存储
  14. // 判断一下后台是否是成功的,成功后直接下载
  15. if (res.status === 200) {
  16. const url = window.URL.createObjectURL(new Blob([res.data]))//返回的数据
  17. const link = document.createElement('a')
  18. link.style.display = 'none'
  19. link.href = url
  20. link.setAttribute('download', fileName + '.xlsx')//文件名
  21. document.body.appendChild(link)
  22. link.click()
  23. link.remove()
  24. }
  25. })

上传文件时接口参数要求二进制文件流

  1. let requestDatas = new FormData()
  2. requestDatas.append('file', this.$refs.dmtUploadFile.uploadFiles[0].raw)//获取上传的文件信息
  3. request({
  4. url: url,
  5. method: 'POST',
  6. data: requestDatas
  7. }).then(res => {
  8. })

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/683445
推荐阅读
相关标签
  

闽ICP备14008679号