前端处理Blob文件流

axios({
        url: `${baseURL}workplan/workPlanController/api/searchFilesTempByRegisterId?id=${id}`,
        method: 'GET',
        responseType:"blob"
      }).then((res) => {
      	// 文件名称处理
        let filename = res.headers['content-type']
        let index = filename.indexOf("=")
        let name = decodeURI(filename.substr(index + 1,filename.length).split('.')[0])
        // 文件类型处理
        let type = filename.substr(index + 1,filename.length).split('.')[1].split(';')[0]
        let blob = new Blob([res.data],{
          type:'application/pdf'
        });
        let url = window.URL.createObjectURL(blob)
        let a = document.createElement("a");
        a.href = url;
        // 名称和类型拼接
        a.download = `${name}.${type}`;
        a.click();
        // 5.释放这个临时的对象url
        window.URL.revokeObjectURL(url);
      })
      .catch((err) => {
      })
前端代码中,你可以通过使用`XMLHttpRequest`对象来获取Java后台返回的文件,并进行处理。以下是一个示例代码: ```javascript function downloadExcel() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'your-export-url'); xhr.responseType = 'blob'; xhr.onload = function() { if (xhr.status === 200) { var blob = new Blob([xhr.response], { type: 'application/vnd.ms-excel' }); var fileName = 'your-file-name.xls'; if (window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveBlob(blob, fileName); } else { var url = window.URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = fileName; a.click(); window.URL.revokeObjectURL(url); } } }; xhr.send(); } ``` 在这个示例代码中,我们使用了`XMLHttpRequest`对象来获取Java后台返回的文件,并设置了`responseType`为`blob`。然后,我们在`onload`事件中对返回的文件进行处理。 如果返回的状态码为200,我们就将文件转换`Blob`对象,并指定文件类型为Excel文件。如果浏览器支持`msSaveOrOpenBlob`方法,我们就使用该方法下载文件。否则,我们通过创建一个`a`标签,并设置`href`和`download`属性来下载文件。最后,我们通过`URL.revokeObjectURL`方法释放URL对象。 需要注意的是,这里的`your-export-url`是你的Java后台导出Excel的接口地址,`your-file-name.xls`是你要下载的文件名。另外,如果你使用的是jQuery,也可以使用它提供的`$.ajax`方法来获取文件并进行处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值