七牛上传策略的callbackBody将&转为\u0026导致导致Laravel无法解析

七牛的API把callbackBody中的'&'encode为'\u0026',导致业务服务器(laravel)无法解析。
求问是我哪里配置出了问题吗,还是这是七牛API的问题,还是说需要在业务端自己写个函数去解析。那万一碰到变量中含有\u0026时怎么办?
求大神指点。。。

在上传策略中设置callbackBody如下

"callbackBody"        => "fname    =$(fname)
                          &fkey    =$(key)
                          &bucket  =$(bucket)
                          &size    =$(fsize)
                          &mimetype=$(mimeType)
                          &ext     =$(ext)}",

然后上传时报错
图片描述

可以看到&全被转码成了\u0026。

业务服务器用的是Laravel,通过curl指令测试

`curl -H "Content-Type: application/x-www-form-urlencoded" -X POST  --data "fname=3.1+Random+Testing.pptx\u0026key=3.1+Random+Testing.pptx\u0026bucket=verimake-video\u0026size=188533\u0026mimetype=application%2Fvnd.openxmlformats-officedocument.presentationml.presentation\u0026ext=.pptx" http://(serveruri)/Video/callback

在业务端用dd函数将得到的input打印如下

array:1 [▼
  "fname" => "3.1 Random Testing.pptx\u0026key=3.1 Random Testing.pptx\u0026bucket=verimake-video\u0026size=188533\u0026mimetype=application/vnd.openxmlformats-officedocument.presentationml.presentation\u0026ext=.pptx"
]

也就是说因为\u0026没有被deocode为&导致解析变量时出现问题。

`

阅读 3.3k
1 个回答
$arr = [
  'fname'    =>$(fname),
  'fkey'   =>$(key),
  'bucket'  =>$(bucket),
  'size'    =>$(fsize),
  'mimetype'=>$(mimeType),
  'ext'     =>$(ext),
];

"callbackBody"        => http_build_query($arr)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题