如何解压php中的数据和js中使用pako.deflate的数据
how to decompress data in php and the data which use pako.deflate from js
我使用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 字符串作为数据,然后尝试对包含 far 更大字符范围的字符串进行 base64 解码。
也许看看 $params['data']
包含哪些字符 - 如果它们中的任何一个在 base64 范围之外(a-z
、A-Z
、0-9
、+
, /
, 并且可能尾随 =
) 那么我认为这就是问题所在。
然后您可以尝试将行简单地更改为:
$res = gzinflate($data);
我使用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 字符串作为数据,然后尝试对包含 far 更大字符范围的字符串进行 base64 解码。
也许看看 $params['data']
包含哪些字符 - 如果它们中的任何一个在 base64 范围之外(a-z
、A-Z
、0-9
、+
, /
, 并且可能尾随 =
) 那么我认为这就是问题所在。
然后您可以尝试将行简单地更改为:
$res = gzinflate($data);