问题标签 [pako]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
906 浏览

javascript - 在JS中重建解压zip文件的文件/文件夹结构

我正在尝试使用 JavaScript 在浏览器中重建解压缩的 zip 文件的文件/文件夹结构。理想情况下,我希望将所有文件都放在FileList中 (就好像它们刚刚通过网页上传一样)或其他可迭代对象。例如,一个压缩文件夹包含

应该重构为一个 FileList/iterable 对象,其中每个项目对应于包中的一个文件(据我所知,没有办法在 JS 中保留文件夹结构)。

我在阅读 tar.gz 文件并使用pako和此问题底部的代码解压缩它方面非常成功。但是,pako 的结果是一个大的 ArrayBuffer(inflator.result在下面的代码中),在尝试重建原始文件和文件夹时,我无法从中得出正面或反面。我遇到了以下问题:

  1. 我如何知道 ArrayBuffer 中一个文件的结束位置和另一个文件的开始位置?
  2. 如何确定当前文件的原始文件类型?

一旦我知道了这一点,我应该能够将 ArrayBuffer 数据转换为一个文件

搜索网络也没有提供任何有用的信息。有没有人知道如何解决这个问题?

这是我用来解压缩 zipfile 的代码。

0 投票
1 回答
6078 浏览

javascript - 使用 pako.js 在 javascript 中压缩字符串

我能够使用 pako.js 解压缩 JavaScript 中的字符串

http://jsfiddle.net/9yH7M/1/

我想要一种压缩字符串的方法,并且可以通过上面的代码使用 pako 和 gzip 解压缩输出。

我怎样才能做到这一点?

0 投票
0 回答
1066 浏览

angularjs - 在 AngularJS 中压缩数据

我有这个应用程序,其中客户端的上传速度非常低,因此我需要压缩它们发送到服务器的 JSON 以提高它们的速度。

我在这里检查了几个(可能是所有)关于 pako、gzip、zlib 等的问题......但无法让它们为我工作。

我试过这样定义请求:

它基本上发送一个空的身体。

我尝试安装ngPako并执行如下请求:

浏览器就在我身上崩溃了

反正有角度压缩数据吗?

0 投票
1 回答
3325 浏览

angular - 将节点模块导入角度打字稿/角度cli的正确方法是什么

我将一些“遗留”(非打字稿)js库导入我的角度SPA。

通常我只是将负载从 cdn 添加到 index.html,例如:

在角度分量中我只是贴花

这通常有效。现在我喜欢在本地“托管”这个库。我可以将它添加到角度项目中

但是我如何将它添加到 Angular 应用程序中?
我测试了向 polyfills.ts 添加导入(这适用于hammerjs,但不适用于pako)

这也应该适用于 ng build (并且可能被添加到已编译/打包的 runtime.js

顺便说一句:这是一个测试 stackblitz https://stackblitz.com/edit/ng-load-pako

0 投票
1 回答
717 浏览

javascript - 通过 JS 压缩的 gzinflate 字符串

我正在尝试通过Pako在客户端压缩一个巨大的 JS 对象,然后将其恢复到 PHP 脚本中。

JS代码

PHP 代码

应该是相当直截了当的事情,但我不断得到gzinflate(): data error. 已经花了几个小时跳舞,仍然没有结果。求救!

0 投票
1 回答
198 浏览

javascript - 来自 websocket API 的膨胀响应

我从 websocket 端点收到以下消息,想知道如何扩展消息并获取 json。响应来自加密货币 websocket api。我通常使用 pako,但无法让 pako 在下面充气

回复

[""]

谢谢

0 投票
1 回答
1788 浏览

javascript - 我的网页需要 JSZip 和 gzip,而 JSZip 拥有所有的成分,但以我无法破解的方式隐藏它们

JavaScript 中对 gzip 的支持出奇的薄弱。所有浏览器都实现它以支持 Content-encoding: gzip 标头,但没有标准访问浏览器的 gzip / gunzip 功能。因此,必须使用一种仅 javascript 的方法。周围有一些旧的 gzip-js 库,但它们似乎不支持流,并且已经 6 年没有维护了。

然后是 pako,维护得更积极,但如果使用他们自己的发行版,也不会看到启用流,因此您需要将整个二进制数组和 gzip 输出保存在内存中。我可能错了,但这就是我正在收集的内容。

JSZip 是一个设计良好的工具,并且支持流“Workers”。JSZip 使用 pako。ZIP 条目是 DEFLATEd 的,并且像 gzip 一样具有 CRC32 校验和,当然只是组织方式略有不同。仅考虑 JSZip 源,看起来很容易将 pako 的 gzip 压缩选项公开到 JSZip 的流支持中。如果我同时使用 JSZip 并且还需要 gzip,我为什么要加载 pako 两次?

我希望我可以破解 JSZip 的内部结构并连接到底层的 Workers,并使用基于 pako 的“Flate”(即,in-flate / de-flate)实现和 pako 识别的 gzip 选项。用 Chrome javascript 控制台探索了它,但我无法通过。可分发的可加载 jszip.js 或 jszip-min.js 隐藏了所有内部组件,无法访问脚本。我无法打开那个盒子。

所以我一直在查看 git hub 源代码,看看我是否可以构建自己的 jszip.js 或 jszip-min.js 可加载模块,在那里我将导出更多内部资源以供我的页面使用,但一直在这个20 年来,UNIX 制作文件,ant,一切,当谈到打包 javascript 模块的这些技巧时,我觉得自己完全是个新手,我看到 bower 和“gruntfiles”似乎都与 node.js 相关,我不知道不需要(仅客户端浏览器)并且从未使用过,所以我不知道从哪里开始。

0 投票
2 回答
805 浏览

php - 如何在 PHP 中解压缩之前在 JavaScript 中压缩的数据

我正在尝试使用压缩 JSON 字符串pako并将其发送到 PHP 脚本(Laravel)并解压缩,然后对其进行修改,再次压缩并将其发送回客户端。

当我在客户端压缩和解压缩时,它工作得很好;但是当我将压缩数据从客户端发送到服务器时,它会告诉我:

“ErrorException(E_WARNING)gzdecode():数据错误”。

我已经尝试过gzinflate, gzumcompress, gzuncompress, SO和官方文档zlibpako但没有任何效果。

客户端代码

服务器代码

0 投票
0 回答
255 浏览

javascript - Pako js在膨胀后返回无效结果

我正在尝试在服务器上压缩 js 文件,然后在客户端解压缩并运行它。我的服务器上的代码:

ejs模板:

如果我对该代码进行放气,则会出现客户端错误:“未捕获的无效距离代码”:

但如果我试图缩小这个:

它工作正常。此外,如果我试图缩小这个:

Chrome 向我抛出一个错误:“Uncaught SyntaxError: Unexpected identifier”,因为 pako 给出了无效代码。那么,也许,字符集有问题,有什么想法吗?帕科版本:1.0.10

0 投票
0 回答
662 浏览

javascript - 使用 pako 压缩文件,然后使用 HTML 表单上传

我正在尝试使用带有 php 表单的 pako.js 来上传文件。

这就是我想要发生的事情:

1) 用户通过按钮选择文件 2) 文件在客户端压缩 3) 压缩文件上传到服务器

这是我到目前为止所拥有的,这是行不通的。当我尝试将元素 inputfilebutton 的值设置为压缩文件时出现异常。

的HTML:

JavaScript: