如何解压缩PHP中的数据以及使用JS中的pako.deflate的数据



我使用pako.deflate在 javascript 中压缩数据,如下所示:

js file:
const params = [{id: 5, name: '张三', list: [{code: '10010', type: 'media'}]},{id: 6, name: '李四', list: [{code: '20010', type: 'site'}]}]
let binaryString = pako.deflate(JSON.stringify(params), { to: 'string' })
http.post({data: binaryString})...

在 Web 服务器中,我需要使用 PHP 解压缩该数据。

这就是我所做的

php file:
$data = $params['data']; // got the right post data
$res = gzinflate(base64_decode($data));
echo $res; //echo false

$res呼应false

我错过了什么?

您在服务器上进行 base 64 解码 - 在发布数据之前,您实际上是否在客户端进行 base64 编码?在发布的代码中没有迹象表明这种情况正在发生。

我怀疑您可能正在发送一个放气的 utf-8 字符串作为您的数据,然后尝试 base64 解码包含更大字符范围的字符串。

也许看看$params['data']包含哪些字符 - 如果它们中的任何一个在base64范围之外(a-zA-Z0-9+/,并且可能尾随=(,那么我认为这将是问题所在。

然后,您可以尝试简单地将行更改为:

$res = gzinflate($data);

最新更新