第一种后台返回url的下载

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

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

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

 

//请求流文件的方式  
axios({
       method: 'post',
       url: process.env.BASE_API + '/api/register/download',
       data: {
          "confirmFlg": true,
           "data": {},//上传的参数
        },
        headers: {
           Authorization: 'Bearer ' + this.$store.getters.token
        },
        responseType: 'blob' //非常重要不可少
     }).then(res => { // 后台返回的数据 res中存储
          

         // 判断一下后台是否是成功的,成功后直接下载
         if (res.status === 200) {
            const url = window.URL.createObjectURL(new Blob([res.data]))//返回的数据
            const link = document.createElement('a')
            link.style.display = 'none'
            link.href = url
            link.setAttribute('download', fileName + '.xlsx')//文件名
            document.body.appendChild(link)
            link.click()
            link.remove()
         }
      })

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

let requestDatas = new FormData()
  
requestDatas.append('file', this.$refs.dmtUploadFile.uploadFiles[0].raw)//获取上传的文件信息
request({
    url: url,
    method: 'POST',
    data: requestDatas

 }).then(res => {
       
 })

Logo

前往低代码交流专区

更多推荐