将 NodeJS 与 AppJS 结合使用以使用 JSZip 打包 Zip
Using NodeJS with AppJS to Package Zip with JSZip
我的原始文件无法使用本地方法下载,因此我决定使用 Node.js, as it's already packed in AppJS,但 zip 文件仍无法在 AppJS 中执行。
$(".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;
});
我没有使用 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);
};
我的原始文件无法使用本地方法下载,因此我决定使用 Node.js, as it's already packed in AppJS,但 zip 文件仍无法在 AppJS 中执行。
$(".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;
});
我没有使用 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);
};