public class UploadToken {
public static String getUploadToken(Object object){
Gson gson=new Gson();
String jsonObject=gson.toJson(object);
String encodedPutPolicy = UrlSafeBase64.encodeToString(jsonObject);
String encodedSign="";
try {
encodedSign =hmacSha1(encodedPutPolicy);
}catch (Exception e){
}
String uploadToken = QiNiuConstant.ACCESSKEY + ":" + encodedSign + ":" + encodedPutPolicy;
return uploadToken;
}
public static String hmacSha1(final String base)
throws NoSuchAlgorithmException, InvalidKeyException {
String type = "HmacSHA1";
SecretKeySpec secret = new SecretKeySpec(QiNiuConstant.SECRETKEY.getBytes(), type);
Mac mac = Mac.getInstance(type);
mac.init(secret);
byte[] digest = mac.doFinal(base.getBytes());
return Base64.encodeToString(digest, Base64.URL_SAFE);
}
其中Object的为:
public class ImagePutPolicy implements Serializable {
private String scope;
private long deadline;
private ReturnBody returnBody;
public ImagePutPolicy(String fileName) {
scope = QiNiuConstant.SAVESPACE+":"+fileName;
}
public long getDeadline() {
return deadline;
}
public void setDeadline(long deadline) {
this.deadline = System.currentTimeMillis()/1000+deadline;
}
public ReturnBody getReturnBody() {
return returnBody;
}
public void setReturnBody(ReturnBody returnBody) {
this.returnBody = returnBody;
}
}
上传代码为
private void simpleUpload() {
ImagePutPolicy putPolicy=new ImagePutPolicy(key);
putPolicy.setDeadline(3600);
token=UploadToken.getUploadToken(putPolicy);
byte[] data=new byte[]{ 0, 1, 2, 3};
uploadManager.put(data, key, token,new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject response) {
// res 包含hash、key等信息,具体字段取决于上传策略的设置。
Log.i("qiniu", key + ",\r\n " + info + ",\r\n " + response);
}
}, new UploadOptions(null, "test-type", true, null, null));
}
token不是后台生成过来的么
-----------------------------------7-29编辑-------------------------------------------------
这应该是七牛上传,所以需要安卓端生成token。如果是七牛上传,代码如下: