美文网首页
XMLHttpRequest 链接下载

XMLHttpRequest 链接下载

作者: Petricor | 来源:发表于2020-06-27 21:36 被阅读0次

    XMLHttpRequest 链接下载

    • 通过链接点击下载word文档zip文件等
      1.XMLHttpRequest 对象用于在后台与服务器交换数据。
      2.创建a链接DOM元素进行下载

    通过链接下载的是GET请求

    let DLSBookSentPaper = (id, name, type) => {
        let url = *请求所需url地址*;
        let fileUlr = url + `?id=${id}&name=${name}&type=${type}`;
        downloadZipXML(fileUlr , '下载数据类型') 
        // downloadZipXML(fileUlr, 'application/msword') 
    }
    
    
    • 上面代码是创建下载文件的路径 ,自己自主拼接成a链接下载地址 ,此地址直接粘贴在浏览器地址栏中便可下载

    封装下载函数

    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;
            }
        }
    }
    
    • 请求如下:


      XML请求详情

    相关文章

      网友评论

          本文标题:XMLHttpRequest 链接下载

          本文链接:https://www.haomeiwen.com/subject/yfsgfktx.html