2017-09-08 86 views
0

我目前在使用jszip, jszip-utils, and FileSaver來壓縮和下載幾個PDF文件。FileSaver saveAs無法在IE11中工作

self.createZip = function() { 
    var docs = self.list.filteredItems(); 
    var zip = new JSZip(); 
    var count = 0; 
    var zipFilename = "zipFilename.zip"; 

    docs.forEach(function (item) { 
     var filename = item.formDesc() + "_" + item.id() + ".pdf"; 
     // loading a file and add it in a zip file 
     JSZipUtils.getBinaryContent('../career/document/StreamFile/?path=' + item.fileName(), function (err, data) { 
      if (err) { 
       throw err; // or handle the error 
      } 
      zip.file(filename, data, { binary: true }); 
      count++; 
      if (count == docs.length) { 
       zip.generateAsync({ type: 'blob' }).then(function (content) { 
        try { 
          saveAs(content, zipFilename); 
         } catch (e) { 
          console.log(e); 
         }     
       });     
      } 
     }); 
    }); 

此功能目前適用於除IE11以外的所有最新瀏覽器。在IE11中獲取所有文件,但在saveAs上掛起。

+1

這是一個良好的開端,但你是不是在點張貼到#1有道理呢。首先,進行一些調試:代碼在瀏覽器版本之間停止工作的位置,這是filesaver的一個已知問題(你看他們的bug跟蹤器嗎?),有沒有任何控制檯錯誤可以用來做一些谷歌搜索,等等。?現在你所說的只是「我的代碼不起作用,現在是這樣,請爲我解決問題」,沒有任何跡象表明[你首先試圖找出可能是錯的,你自己](/ help /如何對問)。 –

+0

邁克,我已經完成了所有這些,甚至添加了一個try塊,以捕獲任何錯誤,但沒有錯誤。我發現的所有類似問題都是針對IE11使用類型blob。就像我在帖子中說的那樣,它掛在SaveAs上,什麼都不做。所以,我在這裏發佈,看看是否有其他人遇到過這個問題。 – capiono

+0

鑑於這種說法,我假設你google搜索了一些像「filesaverjs ie11」這樣的第一個命令,它爲我提供了https://stackoverflow.com/questions/39266801/saving-file-on-ie11-with-filesaver - 你請不要在您的帖子中提及這一點,而且您也不會提及其解決方案是否對您無效。如果確實如此:這個問題不需要發佈。如果沒有,這是人們需要了解的信息,因爲這會讓你的問題與已經在Stackoverflow中已經回答的問題(我可以通過搜索得到的結果幾次)完全不同。 –

回答

2

試試你的另存爲語句後下清除緩衝區

content = null; 
+0

謝謝,這似乎有所幫助。 – capiono