Javascript 读取客户端上的xz文件

Javascript 读取客户端上的xz文件,javascript,lzma,xz,Javascript,Lzma,Xz,我在服务器上有很大的json文件,我用xz压缩了这些文件。我想我最好是这样请求它们,即压缩,然后在客户端用javascript对它们进行解压缩。我正试着用图书馆,但没能用上 以下是相关的HTML代码片段: <script src="jquery-3.3.1.min.js"></script> <script src="lzma-d-min.js"></script> <script src="main.js"></script&g

我在服务器上有很大的json文件,我用
xz
压缩了这些文件。我想我最好是这样请求它们,即压缩,然后在客户端用javascript对它们进行解压缩。我正试着用图书馆,但没能用上

以下是相关的HTML代码片段:

<script src="jquery-3.3.1.min.js"></script>
<script src="lzma-d-min.js"></script>
<script src="main.js"></script>
第一个
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 < />代码,或者在Python 3中使用代码> > LZMA,或< C++ >代码:我找不到其他javascript库来尝试


我愿意接受使用不同压缩格式的建议。

你把格式弄混了

XZ是一种归档格式。LZMA是底层流压缩机。LZMA-JS只能解压缩LZMA流,而不能解压缩XZ存档


使用
lzma
命令行工具创建原始lzma流。

does
console.log(xz.length)
似乎完全正确?有趣的是,没有。
wc-c
显示65748,但
console.log
显示62245。顺便说一句,我现在正在尝试使用小文件。编码。。。尝试以ArrayBuffer的形式下载文件。github自述文件甚至说,解压需要ByteArray,而不是utf16字符串是的,我看到它这么说了,但我不知道该怎么理解它。我该怎么做呢?我会说
fetch(file_name+'.json.xz')。然后(r=>r.arrayBuffer())。然后(buf=>{LZMA.decompress(new-Uint8Array(buf)
..?或者使用XHR,它将是
XHR.open('get',file_name+'.json.xz');XHR.responseType=“arrayBuffer”;XHR.onload=e=>{LZMA.decompress(new LZMA.result),
…但也许他们甚至直接接受裸体的ArrayBuffer,我不确定。。。
Error: corrupted input
    at y (lzma-d-min.js:1)
    at L (lzma-d-min.js:1)
    at t (lzma-d-min.js:1)