搞了2天,上传回调自定义变量一直无法获取到相应的值,昨天查了好像是没有将值赋值成功替换,导致回调变量的值为空。根据文档,Android端的代码如下
HashMap<String, String> map = new HashMap<>();
map.put("x:type", "1");
map.put("x:phone", "18659218070");
map.put("x:token", "0bd3cffb5c03d484cd9af76b51c5ab5a");
uploadManager.put(photoPath, fileName, mUploadToken, mUpCompletionHandler, mOptions);
UpCompletionHandler mUpCompletionHandler = new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject response) {
DebugKit.e(TAG, "key:" + key);
DebugKit.e(TAG, "statusCode:" + info.statusCode);
DebugKit.e(TAG, "path:" + info.path);
DebugKit.e(TAG, "头像上传错误信息:" + info.error);
DebugKit.e(TAG, "reqId:" + info.reqId);
DebugKit.e(TAG, createQiNiuNormalPicUrl(key));
if (info.isOK() == true) {
ToastKit.show(UserActivity.this, "头像上传成功");
ImageLoader.getInstance().displayImage(createQiNiuNormalPicUrl(key), mUserPic, UILOptions.create());
}
}
};
UploadOptions mOptions = new UploadOptions(map, null, false, new UpProgressHandler() {
@Override
public void progress(String key, double percent) {
String fileName = null;
}
}, null);
以下是服务端上传 token代码
public HashMap<String, Object> getUploadToken() {
Auth auth = Auth.create(QiniuConfig.QINIU_ACCESS_KEY, QiniuConfig.QINIU_SECRET_KEY);
String token = auth.uploadToken(QiniuConfig.QINIU_BUCKET,null,2556028799L, new StringMap()
.put("callbackUrl","http://121.40.200.31/api/qiniuCallBack")
.put("callbackBody", "fname=$(fname)&type=$(x:type)&phone=$(x:phone)&token=$(x:token)")
.put("fsizeLimit", 5242880));
HashMap<String, Object> map = new HashMap<String, Object>();
map.putAll(JFinalUtil.doResult(true));
map.put("result", token);
return map;
}
获得回调结果只能获取到fname,也就是魔法变量,自定义变量都取不到
如上图可示,fname可以获取到相应的值,但是自定义变量都没有值,感觉是没有替换成功或者是APP端没有提交相应数据上去。
经过核查,map的是有值,或者能否输出上传的url链接供我们自行调试?
callbackBody 这样设置的:
"callbackBody", "fname=$(fname)&type=$(x:type)&phone=$(x:phone)"
那么服务端获取的请求的字段是使用 phone 来获取
按照下面的方式再运行下: