2015-07-18 38 views
0

我的原始文件不會使用本地方法下載,因此我決定使用Node.js,因爲它已經打包在AppJS中,並且zip文件仍然不會在AppJS中執行。與AppJS一起使用NodeJS來打包JSZip

任何幫助,非常感謝。

$(".export").on("click", function() { 
 
    var fs = require("fs"); 
 
    var JSZip = require("jszip"); 
 

 
    var zip = new JSZip(); 
 
    zip.file("hello.txt", "Hello node!"); 
 

 
    var content = zip.generate({type:"nodebuffer"}); 
 
    // saveAs(content, "test.zip"); 
 

 
    fs.writeFile("test.zip", content, function(err) { 
 
    if (err) throw err; 
 
    }); 
 
});
body { 
 
    background: #fff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://stuk.github.io/jszip/dist/jszip.min.js"></script> 
 
<script src="http://stuk.github.io/jszip-utils/dist/jszip-utils.js"></script> 
 
<script src="http://stuk.github.io/jszip/vendor/FileSaver.js"></script> 
 

 
<button class="export">Download</button>

注:我已經嘗試使用File API保存文件,但只希望我已經能夠成功地寫入文件中AppJS是使用Node.js,如下圖所示。

var fs = require("fs"); 
fs.writeFile("hello.txt", "Hi", function(err) { 
    if (err) throw err; 
}); 

回答

0

我沒有使用Node,而是在瀏覽器中做了類似的操作,它也需要FileSaver.js

你試過:

var JSZip = require('jszip'); 
var saveAs = require('filesaver.js'); 

var zip = new JSZip(); 
zip.file("hello.txt", "Hello node!"); 

var blob = zip.generate({type: 'blob'}); 
saveAs(blob, 'images.zip'); 

主要的區別就在這裏使用{type: 'blob'}代替nodebuffer。我成功地使用簡單的XHR下載模塊將響應類型設置爲arraybuffer

module.exports = function download(url, callback) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', url, true); 
    xhr.responseType = 'arraybuffer'; 

    xhr.onload = function(e) { 
    callback(null, xhr.response); 
    }; 

    xhr.onerror = function(e) { 
    callback(status.response); 
    }; 

    xhr.send(null); 
}; 
相關問題