0

I use pako.deflate to compress data in javascript, like this:

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})...

and in the web server, I need to decompress that data using PHP.

This is what I do

php file:

$data = $params['data']; // got the right post data

$res = gzinflate(base64_decode($data));

echo $res; //echo false

but $res echo false

What am I missing?

serenas
  • 137
  • 4
  • 10
  • check params data is actually what you expect. check base_64 is what you'd expect. You have three lines in one. Split them and it might help you! – delboy1978uk Jan 08 '20 at 12:07

1 Answers1

0

You are base 64 decoding at the server - do you actually base64 encode at the client at all prior to posting the data? There is no indication this is occurring in the code posted.

I suspect it is likely you are sending a deflated utf-8 string as your data, and then trying to base64 decode a string which contains a far greater range of characters.

Maybe look what characters $params['data'] contains - if any of them are outside the base64 range (being a-z,A-Z, 0-9, +, /, and possibly trailing =) then I think this would be the problem.

You could then try simply changing the line to:

$res = gzinflate($data);
Brent
  • 4,611
  • 4
  • 38
  • 55