用SDK上传后:
public void uploadPictureBytes(byte [] picture){
UploadManager uploadManager = new UploadManager();
String key = pictureName;
String token = "8VTgVpzoGcxeuMR0df4te3qH9JE8xDy0XqZCqTLR:OM9b3CWCXj50Lqc_XCz8_1jBhu8=:eyJzY29wZSI6ImZ1Y2tjYW5jZXIiLCJkZWFkbGluZSI6MTQ0MjkzNzQ5N30=";
uploadManager.put(picture, key, token,
new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject res) {
// res 包含hash、key等信息,具体字段取决于上传策略的设置。
Log.i("qiniu", key + ",\r\n " + info + ",\r\n " + res);
}
}, null);
然后下载:
private byte [] loadImageFromNetwork(String imageUrl ) {
byte [] bytes = null;
try {
URL url = new URL(imageUrl);
URLConnection con = url.openConnection();
int contentLength = con.getContentLength();
Log.d("test", "the length is : " + contentLength);
InputStream is = con.getInputStream();
bytes = FormatTools.getInstance().InputStream2Bytes(is);
is.close();
} catch (Exception e) {
Log.d("test", e.getMessage());
}
if (bytes == null) {
Log.d("test", "null drawable");
} else {
Log.d("test", "not null drawable");
}
return bytes;
}
我上传的文件是用DES3加密的.下载后解密发生错误,于是对比了两个文件发现不同.但是长度是相同的.
请问大牛这是哪个环节发生的错误呢?非常感谢!!
七牛这边会保证文件上传前后上传后的一致性,七牛用来判断文件是否一致是采用计算文件的hash值。
安卓的话,计算文件hash值(etag)的算法是:
https://github.com/qiniu/android-sdk/blob/master/library/src/main/java/com/qiniu/android/utils/Etag.java#L54
保存在七牛上面的文件计算hash是:
外链?stat 可以直接看到
你可以在某些加密解密上传下载的处理前后,加入一下计算etag对比一下,看是哪出了问题。