chrome實現下載文件JS代碼彈出'另存為'窗口


1.TXT類型文件

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function fake_click(obj) {
      var ev = document.createEvent("MouseEvents");
      ev.initMouseEvent(
        "click", true, false, window, 0, 0, 0, 0, 0
        , false, false, false, false, 0, null
      );
      obj.dispatchEvent(ev);
    }

    function myExport(name, data) {
      var urlObject = window.URL || window.webkitURL || window;

      // 有效的命名空間URI
      // HTML - 參閱 http://www.w3.org/1999/xhtml
      // SVG - 參閱 http://www.w3.org/2000/svg
      // XBL - 參閱 http://www.mozilla.org/xbl
      // XUL - 參閱 http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul

      var myFile = new Blob([data]);
      var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
      save_link.href = urlObject.createObjectURL(myFile);
      save_link.download = name;
      fake_click(save_link);
    }


    myExport('filename.xlsx', "helloworld!"); 
  </script>
</body>

</html>

2.表格保存彈出另存為框

 fake_click(obj) {
      var ev = document.createEvent('MouseEvents')
      ev.initMouseEvent(
        'click',
        true,
        false,
        window,
        0,
        0,
        0,
        0,
        0,
        false,
        false,
        false,
        false,
        0,
        null
      )
      obj.dispatchEvent(ev)
    },
    // 測試代碼-測試使用打開另存為窗口
    myTestT() {
      // Blob 格式 Excel 文件下載export
      console.log('123456')
      let url = 'http://10.10.10.22/aa/ddd/myExcel.xlsx'
      axios
        .get(url, {
          responseType: 'blob',
          params: {}
        })
        .then(res => {
          // res.data 是一個 blob 流格式
          var myFile = new Blob([res.data])
          var save_link = document.createElementNS(
            'http://www.w3.org/1999/xhtml',
            'a'
          )
          var urlObject = window.URL || window.webkitURL || window
          save_link.href = urlObject.createObjectURL(myFile)
          // 要么就讓用戶手動加.xlsx,要么就沒有另存為窗口
          // save_link.download = 'myExcel.xlsx' // 如果這里不寫.xlsx就可以打開另存為按鈕
          save_link.download = 'myExcel'
          this.fake_click(save_link)
        })
    },
    myExport(name, data) {
      var urlObject = window.URL || window.webkitURL || window

      // 有效的命名空間URI
      // HTML - 參閱 http://www.w3.org/1999/xhtml
      // SVG - 參閱 http://www.w3.org/2000/svg
      // XBL - 參閱 http://www.mozilla.org/xbl
      // XUL - 參閱 http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul

      var myFile = new Blob([data])
      var save_link = document.createElementNS(
        'http://www.w3.org/1999/xhtml',
        'a'
      )
      save_link.href = urlObject.createObjectURL(myFile)
      save_link.download = name
      this.fake_click(save_link)
    },
    // 測試代碼-測試使用打開另存為窗口

下一個方法: 設置A標簽,src直接對應一個可以下載的鏈接,以及download 可以用戶右鍵另存為

最靠譜的方法: 使用a標簽,添加download屬性,然后讓用戶設置瀏覽器-高級-每次下載前詢問另存為


免責聲明!

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



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