Javascript 導出文件(post、get請求)


get請求,導出文件

    /**
     * @author
     * @function: 導出文件(get請求)
     * @param {*} linkUrl 下載鏈接
     */
   let exportFileByGet = function (linkUrl) {
      if (!linkUrl) {
        return false;
      }
      if (
        navigator.userAgent.indexOf("Chrome") > -1 &&
        navigator.userAgent.indexOf("Safari") > -1
      ) {
        var a = document.createElement("a");
        a.href = linkUrl;
        a.click();
      } else {
        window.open(linkUrl, "_blank");
      }
    };

 post請求,導出文件

    /**
     * @author:
     * @function: 導出文件(post請求)
     * @param {*} queryUrl 請求鏈接
     * @param {*} queryParams 請求參數
     * @param {*} cb 回調函數
     *
     */
    let exportFileByPost = function (
      queryUrl,
      queryParams = {},
      cb
    ) {
      if (!queryUrl) {
        return false;
      }
      this.$axios()
        .post(queryUrl, queryParams, {
          responseType: "blob",
        })
        .then(
          (res) => {
            // 異常處理
            if (res.data.type == "application/json") {
              let reader = new FileReader();
              reader.readAsText(res.data, "utf-8");
              reader.onload = function (e) {
                let result = JSON.parse(reader.result);
                this.$message.error(result.msg || "error!");
                cb();
              };
              return false;
            }
            let fileName = "";
            if (res.headers["content-disposition"]) {
              fileName = decodeURI(
                res.headers["content-disposition"].split(`filename=`)[1] //此處根據實際返回下載文件名稱分割
              );
            }
            let type = res.headers["content-type"];
            if (!type) {
              this.$message.error("file type error!");
              cb();
            }
            let blob = new Blob([res.data], {
              type: type, //根據返回文件類型
            });
            if (window.navigator.msSaveOrOpenBlob) {
              navigator.msSaveBlob(blob, fileName);
            } else {
              // 非IE下載
              const elink = document.createElement("a");
              elink.style.display = "none";
              elink.href = URL.createObjectURL(blob);
              if (fileName) elink.download = fileName;
              document.body.appendChild(elink);
              elink.click();
              setTimeout(() => {
                URL.revokeObjectURL(elink.href); // 釋放URL對象
                document.body.removeChild(elink);
              }, 5000); //解決部分瀏覽器下載時“無此文件”問題
            }
            cb();
          },
          (res) => {
            this.$message.error(res.msg || "error!");
            cb();
          }
        );
    };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM