问题标签 [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.
json - json到base64的转换
我一直在寻找 pako 将我的 base64 更改为 JSON,我可以完美地工作。但是我怎样才能扭转它呢?
我使用了在线 JSON 到 base64,但结果与我最初输入的原始 base64 不同。
我在此片段的评论中留下了我的 base64 样本及其输出(也已评论)。我可以用 pako 把它恢复到原来的状态吗?
javascript - 在 Rails 中缩小响应并在 JS 中膨胀
我在 Ruby on Rails 中创建了一个 API。我没有将响应正文与 API 响应一起发回,而是将其广播到外部服务,然后由外部服务负责实时分发给所有连接的客户端(即 WebSockets)。
今天我遇到了一个问题,我意识到我们的第 3 方提供商只允许最大 25kb 的数据包。随着数据增长到超过此限制并且第 3 方服务已开始阻止呼叫,我们的一项响应已开始出现问题。附带说明一下,数据包很少会增长到大于 25kb。
我做了一些研究,正在考虑最好的主意是什么。我正在考虑的一个想法是使用压缩响应ZLib
,然后在 JS 端对其进行解压缩。导致此问题的文章是这个 StackOverflow question。
我设法使通货紧缩和 Base64 编码正确,但无法在 JS 端解码。我还测试了生成的 Base 64 字符串,但像这样的服务将 base64 字符串标记为无效。
我的代码如下所示:
在 Rails 控制器中
在接收广播的 JS 中:
当我执行广播时,我收到错误:unknown compression method
. 我知道这可能与pako
.,但我也尝试了其他方法但没有成功。有没有人有任何想法甚至更好的方法来解决这个问题?
更新:
Rails 中生成的 Base64 字符串如下所示:
javascript - reactJS中实现加密解密OpenSSL和zlib
我的 PHP 代码有 2 个函数,有使用 openSSL 的加密和解密,实际上在我重构它之前,我将 openSSL 结果编码为 base64,导致它太长我更改为使用 zlib(gzdeflate,gzinflate)压缩然后转换最后结果为十六进制。
这是我的 PHP 代码,它在 PHP 上运行良好:
然后我尝试在 React 上将 JS 转换为 JS 并制作了简单的实用程序,这是我到目前为止的 JS 代码:
我将 gzinfalte、gzdeflate、hex2bin、bin2hex方法拆分为另一个名为string.js的 JS 文件并导入一些包CryptoJS和PakoJS
string.js 包含一些这样的方法:
尝试调试时,hex2bin方法没有错误
但是,当我尝试将二进制文件转换为gzinflate时,它会显示错误
无法读取未定义的属性“密文”
当我尝试更改secret_key和iv时出现错误:
显示错误
错误:无效的存储块长度
任何人都可以帮助我吗?
javascript - 如何在浏览器中使用 JavaScript pako 库解压缩文件?
我正在制作带有 a-frame 的 .glb 查看器。我的 glb 文件很大(大约 400MB),所以我正在尝试加载压缩的 zip 文件(大约 20MB)并在浏览器中解压缩它。但是,pako 不工作.. 错误日志说“未知的压缩方法”。
我使用 Windows 默认功能(右键单击)压缩了一个文件。我有什么问题吗?
javascript - 在会话存储键值对中,值字符串的长度是否有字符限制?
我有一个数据超过 5MB 的对象。我正在使用 pako 将数据压缩到大约 1.7MB。然后我尝试将压缩数据存储到会话存储中。对于较小的对象,这很好用,但是对于这个较大的对象,我超出了配额。考虑到我计算的数据大小低于 5MB,我想知道会话存储中可以存储的内容是否还有其他限制,例如值的字符串长度或 Uint8Array 的字节长度。
javascript - 无法膨胀 SessionStorage 数据;根据通货膨胀方法获得“不正确的标头检查”或“无效的存储块长度”
我有超过 5MB 的数据需要存储在会话存储中。为此,我使用 pako 来压缩数据。
首先,我们有一个 Angular 应用程序,它从 API 接收数据并将其添加到哈希“cachedLookups”中:
然后我们在同一个浏览器窗口中有一个 AngularJS 应用程序,它从会话存储中检索这些数据:
当我点击 pako.inflate 时,我得到“不正确的标题检查”。我也尝试过 inflateRaw,在这种情况下我得到“无效的存储块长度”。我在这里使用 TextEncoder/Decoder,因为尝试将 Uint8Array 直接存储到 SessionStorage 会强制 SessionStorage 超出其配额,尽管计算的大小低于 5MB。我认为这个问题与 Storage API 是关于存储键值字符串对的事实有关。
javascript - 我想用 JavaScript 解压缩 GZIP 字符串
我有这个 GZIPed 字符串:H4sIAAAAAAAA//NIzcnJVyguSUzOzi9LLUrLyS/XUSjJSMzLLlZIyy9SSMwpT6wsVshIzSnIzEtXBACs78K6LwAAAA==
我用这个网站创建了它:http ://www.txtwizard.net/compression
我曾尝试使用pako解压缩它。
问题是 Pako 抛出错误:incorrect header check
我在这里想念什么?
node.js - ERR_PACKAGE_PATH_NOT_EXPORTED:包子路径“./dist/pako.es5.js”不是由“出口”定义的
我在将节点应用程序部署到生产环境时遇到问题。当我尝试使用 Node 执行脚本时,出现以下错误:
但是,当我在测试服务器上执行此脚本时工作正常。我们甚至将节点模块文件夹从测试服务器复制并粘贴到生产服务器,但错误是一样的。我认为是某些外部包中的错误,但我不明白相同的配置如何根据系统出现这种错误。
我尝试将 npm 从 6.14.5 更新到 7.23.0,但错误仍然存在。测试和生产服务器都使用相同版本的 Node,14.X
剩下的唯一可能性是我在两台服务器之间使用了不同的 NODE_ENV 变量,但查看错误消息似乎不太可能。提前致谢。
json - pako.js 中超出了最大调用堆栈大小
我已经使用 pako js 来解压缩 gzip 字符串,但是字符串的大小太大(大约 15 MB),所以我得到了超出最大调用堆栈大小的错误。
错误: 超出最大调用堆栈大小错误
javascript - pako.inflate() - 尝试解压缩数据时未发现错误的标头检查 (ReactJS)
再会。我正在 React App 中创建 covid greenpass 解码器,我需要有关 pako.js 的帮助。我正在尝试对从 base45 解码中获得的 Unit8Array 进行膨胀。而且我收到“未捕获的错误标头检查”错误。我尝试添加{to: "string"}
到inflate()
方法,或使用inflateRaw()
. 我会很乐意提供帮助的。这是代码:
decodedBase45
在控制台中看起来像这样:
或者,也许你可以告诉我如何做到这一点zlib
?