XMLHttpRequest 链接下载

2020-06-27  本文已影响0人  Petricor

XMLHttpRequest 链接下载

通过链接下载的是GET请求

let DLSBookSentPaper = (id, name, type) => {
    let url = *请求所需url地址*;
    let fileUlr = url + `?id=${id}&name=${name}&type=${type}`;
    downloadZipXML(fileUlr , '下载数据类型') 
    // downloadZipXML(fileUlr, 'application/msword') 
}

封装下载函数

let downloadZipXML = (fileUlr, responseType = "application/zip") => {
    var x = new XMLHttpRequest();   
    x.open("GET", fileUlr, true);
    x.responseType = "blob";
    x.onload = function (e) {
        if (e.target.status === 500) {
            console.log('无下载数据'); //后台请求错误在此拦截
            return
        }
        
      if (isJSON(x.responseText)) {      //此处用来判断是否是JSON类型,不能让系统报错
           // 此处也可以判断下载类型  当下载的数据类型和自己想现在的类型不同时再此终止
           //  if (x.response.type !== responseType) {
           //         console.log('无下载数据'); 
          //       return
          //  }
            let result = JSON.parse(x.responseText)
            if(result.msg){
                 console.log(result.msg); 
                // Message({ message: result.msg , type: "error" });   //此处引用了element-ui 
            }else{
               console.log('无下载数据'); 
              //    Message({ message: '无下载数据' , type: "error" });  //此处引用了element-ui 
            }
            return
        }
   
        var downloadUrl = e.target.responseURL   //获取下载地址

        var anchor = document.createElement("a");  //创建 a标签dom元素 
        anchor.href = downloadUrl;  
        // anchor.download = 'fileName';  //为下载数据重新命名
        anchor.click();
        anchor.remove()
        console.log('下载成功');
        // window.location.href = e.target.responseURL
    };
    x.send(null);
}

let isJSON = (str)=>{
    if (typeof str == 'string') {
        try {
            var obj=JSON.parse(str);
            if(typeof obj == 'object' && obj ){
                return true;
            }else{
                return false;
            }

        } catch(e) {
            return false;
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读