客户端直传多文件,如何设置自定义变量直接通过json返回给客户端而不需要返回业务服务器

客户端用过js上传多个文件,每次添加一个文件异步请求uptoken,然后通过html5的file对象获取file然后通过xmlhttprequet循环send,最后如何设置上传后七牛返回给客户端的自定义数据,一般情况下,七牛返回的json是

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
    "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
    "key": "gogopher.jpg",
}

或者

{
    "error":"invalid argument"
}

如何设置返回的信息里面除了hash和key,还有其他的,比如

  HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: no-store

    {
        "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
        "key": "gogopher.jpg",
        "userid" : 12,
        "w":120,
        "h":90,
    }
阅读 3.3k
2 个回答

服务端生成token的时候,你可以在上传策略putPolicy中设置callbackbody,使用自定义变量魔法变量来回调给你的服务器,然后你的服务器将这些信息再通过七牛返回给你的客户端就行了。

我是这样生成uptoken的:

  $ak = 'ak';
    $sk = 'sk';
    Qiniu_SetKeys($ak, $sk);
    $mac = new Qiniu_Mac($ak,$sk);
    $policy = new Qiniu_RS_PutPolicy($bucket);
    $policy->Expires = 3600*24*30;
    $policy->fsizeLimit = 5*1024*1024;
    $policy->mimeLimit = "image/jpeg;image/png";
    //todo 此处设置callbackbody,$policy->callbackbody = ???
    echo $policy->token($mac);

todo处是否是这样设置:$policy->callbackbody ="name=$(fname)&hash=$(etag)&location=$(x:location)&price=$(x:price)&uid=123";

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