【发布时间】:2017-03-15 20:36:10
【问题描述】:
我需要将 json 文件加载到 Javascript 容器中。在用户的浏览器上,json 文件被加载到处理数据的 Javascript 库中。然而,这个文件变得非常大(10MB),但如果我压缩它,我可以把它缩小到 100KB。
因此,我想在服务器上压缩文件,使用 ajax 下载,解压缩并将其加载到我的 javascript 容器中。
生成 zip 文件很容易。我正在努力的是下载文件并解压缩它。我找到了一个名为zip.js 的库。我已经按照他们的示例进行操作,但我无法让它发挥作用。我认为我加载文件的方式不正确。
这是我目前拥有的:
var file_data = $.ajax({
url: "/path/to/file.zip",
async: false
}).responseText;
zip.createReader(new zip.TextReader(file_data), function(reader) {
// get all entries from the zip
reader.getEntries(function(entries) {
if (entries.length) {
// get first entry content as text
entries[0].getData(new zip.TextWriter(), function(text) {
// text contains the entry data as a String
console.log(text);
// close the zip reader
reader.close(function() {
// onclose callback
});
}, function(current, total) {
// onprogress callback
});
}
});
}, function(error) {
// onerror callback
console.log(error);
});
我得到的错误是:
文件格式无法识别。
我也尝试了 BlobReader,但没有成功,而且 HttpReader 类不适合我,我明白了
zip.HttpReader 不是构造函数
【问题讨论】:
-
如果您只是将服务器设置为在发送文件时对其进行 gzip 压缩,您会省去很多麻烦。
-
我不确定你的意思?服务器会自动压缩所有文件,浏览器会自动解压吗?
-
是的,就是这个意思。浏览器内置了解压功能。
-
我没有提到的是我实际上是动态生成json文件(使用Django)。是否可以将 gzip 与动态文件一起使用?
-
服务器不关心文件是如何创建的。
标签: javascript jquery zip.js