2015-07-18 5 views
0

Мой исходный файл не будет загружать с помощью локального метода, поэтому я решил использовать Node.js, как это уже упакованы в AppJS, и до сих пор почтовый файл не будет выполняться в AppJS.Использование NodeJS с AppJS в Пакет Zip с 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>

Примечание: Я пытался сохранять файлы с помощью API файлов, но только хочу я был в состоянии успешно записать файл в AppJS является использование Node.js, как показано ниже.

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

ответ

0

Я не использовал узел, но вместо того, чтобы делать что-то подобное в браузере, который требуется 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. Я успешно установил тип ответа на arraybuffer, используя простой модуль загрузки XHR.

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); 
};