VUE,POST方法提交form表单 下载文件

  download(){
  //准备数据
      var obj = {
        ...
      };
      var s = noticeEncrypt(JSON.stringify(obj));
      var files = new FormData();
      let config = {
        headers: {
          "Content-Type": "multipart/form-data",
        },
      };
      files.append("s", s);
      axios({
        method: "post",
        url: "...", // 请求地址
        data: files, // 参数
        header: config,
        responseType: "blob", // 表明返回服务器返回的数据类型
      }).then((res) => {
        console.log(res)
        if (window.navigator.msSaveBlob) {
          //IE以及IE内核的浏览器
          try {
            window.navigator.msSaveBlob(res.data, file.name); //response为接口返回数据,这里请求的时候已经处理了,如果没处理需要在此之前自行处理var data = new Blob([response.data]) 注意这里需要是数组形式的,fileNm就是下载之后的文件名
            // window.navigator.msSaveOrOpenBlob(response, fileNm);	//此方法类似上面的方法,区别可自行百度
          } catch (e) {}
        } else {
        //在headers中截取filename
        var filename = res.headers//下载后文件名
        filename = filename["content-disposition"]
        filename = filename.split(";")[1].split("filename=")[1];
        var blob = new Blob([res.data])
          var downloadElement = document.createElement('a');
        var href = window.URL.createObjectURL(blob); //创建下载的链接
        downloadElement.href = href;
        downloadElement.download = filename 
        //此处也可以将filename写死 "filename.xlsx"
        document.body.appendChild(downloadElement);
        downloadElement.click(); //点击下载
        document.body.removeChild(downloadElement); //下载完成移除元素
        window.URL.revokeObjectURL(href); //释放掉blob对象 
        }
      });
    },
Logo

前往低代码交流专区

更多推荐