用blob下载文件
程序员文章站
2024-03-14 09:26:28
...
/**
* @description 下载文件
* @param { string } downloadUrl 下载的链接
* @param { string } fileName 下载文件名称
*/
function downloadBlobFile(downloadUrl, fileName, requestObj){
var xhr = new XMLHttpRequest();
// 设置响应类型为blob类型
xhr.responseType = 'blob';
var method = 'get';
if(requestObj && typeof requestObj === 'object'){
if(requestObj.method !== '' && requestObj.method !== undefined && requestObj.method !== null ){
method = requestObj.method;
}
}
xhr.open(method, downloadUrl, true);
// 需要token时这么处理
// xhr.setRequestHeader("USER-TOKEN", getCookie('token'));
xhr.onload = function() {
if(this.status === 200){
// 获取响应文件流
var blob = this.response;
var reader = new FileReader();
// 转为base64,可以直接放入a标签href
reader.readAsDataURL(blob);
reader.onload = function(e) {
// 转换完成,创建一个a标签用于下载
var a = document.createElement('a');
a.download = fileName;
a.href = e.target.result;
// $("body").append(a);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
// $(a).remove();
}
}
}
xhr.send();
}
上一篇: rsync-远程同步
下一篇: node.js - gzip压缩