在客户端读取 xz 文件
Read xz file on client side
我在服务器上有很大的 json 文件,我用 xz
压缩了这些文件。我想我最好请求它们,即压缩,并在客户端的 javascript 中解压缩它们。我正在尝试使用 LZMA-JS 库,但我无法让它工作。
这是相关的 HTML 片段:
<script src="jquery-3.3.1.min.js"></script>
<script src="lzma-d-min.js"></script>
<script src="main.js"></script>
这里是 main.js
的相关部分:
$.ajax({
type: 'POST',
processData: false,
contentType: false,
url: file_name+'.json.xz',
beforeSend: function() { element.prop("disabled", true); },
success: function(xz) {
// http://cdn.jwebsocket.org/lzma-js/1.3.7/demos/simple_demo.html
console.log(xz); // 1
LZMA.decompress(xz,
function on_finish(result, error) {
console.log(result); // 2
console.log(error); // 3
data = JSON.parse(result);
},
function on_progress(percent) { }
);
element.prop("disabled", false);
}
});
第一个 console.log
正确地打印了文件内容,至少从幻数 �7zXZ
来看是这样。第二个打印 null
,第三个打印这个:
Error: corrupted input
at y (lzma-d-min.js:1)
at L (lzma-d-min.js:1)
at t (lzma-d-min.js:1)
我没有正确使用图书馆吗?
我可以使用 Linux 上的 xz
或 python3 中的 lzma
或 C++ 中的 boost::iostreams::lzma_decompressor
毫无问题地解压缩有问题的文件。我找不到其他 javascript 库来尝试。
我愿意接受使用不同压缩格式的建议。
您混淆了格式。
XZ 是一种存档格式。 LZMA 是底层流压缩器。 LZMA-JS 只能解压缩 LZMA 流,不能解压缩 XZ 存档。
使用 lzma
命令行工具创建原始 LZMA 流。
我在服务器上有很大的 json 文件,我用 xz
压缩了这些文件。我想我最好请求它们,即压缩,并在客户端的 javascript 中解压缩它们。我正在尝试使用 LZMA-JS 库,但我无法让它工作。
这是相关的 HTML 片段:
<script src="jquery-3.3.1.min.js"></script>
<script src="lzma-d-min.js"></script>
<script src="main.js"></script>
这里是 main.js
的相关部分:
$.ajax({
type: 'POST',
processData: false,
contentType: false,
url: file_name+'.json.xz',
beforeSend: function() { element.prop("disabled", true); },
success: function(xz) {
// http://cdn.jwebsocket.org/lzma-js/1.3.7/demos/simple_demo.html
console.log(xz); // 1
LZMA.decompress(xz,
function on_finish(result, error) {
console.log(result); // 2
console.log(error); // 3
data = JSON.parse(result);
},
function on_progress(percent) { }
);
element.prop("disabled", false);
}
});
第一个 console.log
正确地打印了文件内容,至少从幻数 �7zXZ
来看是这样。第二个打印 null
,第三个打印这个:
Error: corrupted input
at y (lzma-d-min.js:1)
at L (lzma-d-min.js:1)
at t (lzma-d-min.js:1)
我没有正确使用图书馆吗?
我可以使用 Linux 上的 xz
或 python3 中的 lzma
或 C++ 中的 boost::iostreams::lzma_decompressor
毫无问题地解压缩有问题的文件。我找不到其他 javascript 库来尝试。
我愿意接受使用不同压缩格式的建议。
您混淆了格式。
XZ 是一种存档格式。 LZMA 是底层流压缩器。 LZMA-JS 只能解压缩 LZMA 流,不能解压缩 XZ 存档。
使用 lzma
命令行工具创建原始 LZMA 流。