七牛---上傳crc32校檢說明與用法
阿新 • • 發佈:2019-02-19
很多使用者不知道怎樣使用七牛的crc32校檢功能,這篇文章主要介紹下crc32的作用以及使用方法。
首先關於crc32的相關概念可以參考這個文章詳細介紹:CRC32
七牛這邊上傳設定crc32之後,上傳前會先計算本地檔案的crc32,然後和上傳到七牛後檔案的crc32進行對比,如果兩者不同的話就不會儲存並且會返回406:上傳的資料 CRC32 校驗錯誤。
我們不同的SDK用法都是類似的,就是在上傳的時候設定checkCrc引數為true就可以了,比如java sdk裡面上傳的put方法裡面將checkCrc設定為true就可以了:
public Response put(XXXX data, String key, String token, StringMap params,
String mime, boolean checkCrc
private void buildParams() throws QiniuException {
params.put("token", token);
if (key == null) {
fileName = "filename";
} else {
fileName = key;
params.put("key", key);
}
if (checkCrc) {
long crc32 = 0;
if (file != null) {
try {
crc32 = Crc32.file(file);
} catch (IOException e) {
throw new QiniuException(e);
}
} else {
crc32 = Crc32.bytes(data);
}
params .put("crc32", "" + crc32);
}
}
下面是關於java sdk的簡單的demo:
public class UploadWithCrc32 {
String ACCESS_KEY = "AK";
String SECRET_KEY = "SK";
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
UploadManager uploadManager = new UploadManager();
// 設定指定上傳策略
public String getUpToken(){
return auth.uploadToken("phpdemo", null, 3600,null);
}
public void upload() throws IOException{
String FilePath = "/Users/dxy/sync/aaa.jpg";
try {
//設定驗證crc32
Response res = uploadManager.put(FilePath, null, getUpToken(), null, null, true);
System.out.println(res.bodyString());
} catch (QiniuException e) {
Response r = e.response;
// 請求失敗時簡單狀態資訊
System.out.println(r.toString());
}
}
public static void main(String args[]) throws IOException{
// //可以根據七牛的計算crc32演算法打印出crc32的值
// File f=new File("/Users/dxy/sync/aaa.jpg");
// System.out.println(Crc32.file(f));
new UploadWithCrc32().upload();
}