我用的是 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})...
而在网络服务器上,我需要用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字符串作为您的数据,然后试图对一个包含有一个 遥远的 更大范围的角色。
也许看看什么角色 $params['data']
包含--如果其中任何一个超出了base64的范围(是 a-z
,A-Z
, 0-9
, +
, /
,也可能是尾部的 =
)那么我想这就是问题所在。
那么你可以尝试简单地将这一行改为。
$res = gzinflate($data);