我有一个数组转储,我想压缩成一个字符串,可以通过url发送到另一个部分并进行解码。
目前我正在gzcompressing它和base64编码它。但它似乎没有起作用。我在接收端使用它时返回bool(false)
。
gzcompress(json_encode($images),9))
编码数据的示例
string(214) "{"1":null,"2":null,"3":null,"4":"..\/uploads\/2462df38db374653720daa42b7aefec4\/cv4slm3fr8_c.png","5":"..\/uploads\/2462df38db374653720daa42b7aefec4\/vzh72hwqvk_c.png","6":null,"7":null,"8":null,"9":null,"10":null}"
null
值填充了类似的数据。我需要通过网址将这些数据传递给另一个脚本。
注意:打开的url位于模态框内,因此我无法对其进行POST。
答案 0 :(得分:6)
不要这样做。网址不适用于“大型”字符串。它们的长度限制因每个浏览器而异。当浏览器/服务器以静默方式截断您的URL时,您可能会收到损坏的数据。 URL也不适合任意二进制数据,这就是你最终得到的GZ压缩数据,你必须对其进行url编码,这几乎肯定会使字符串超出原来的范围。
请使用POST请求,该请求具有更大的限制。
答案 1 :(得分:2)
不是通过json对其进行编码,而是尝试将该数组转换为字符串并通过POST
发送$encoded = base64_encode(serialize($arrayOfData));
将其作为POST请求发送到服务器并在另一侧解码
$decoded = base64_decode(unserialize($receivedData));
答案 2 :(得分:0)
在上面的答案中,大部分事情都被覆盖了。但Marc提到了好点。 传递更大的字符串可能会导致问题.POST是好方法。
但是在某些情况下你不能使用帖子。例如如果你想提供书签功能。
所以要在字符串中传递这种数据使用base64_encode(gzcompress(json_encode($ arr)),9)。这肯定会减少查询字符串中传递的参数的大小。
希望这会有所帮助。