1. 程式人生 > >七牛---上傳crc32校檢說明與用法

七牛---上傳crc32校檢說明與用法

很多使用者不知道怎樣使用七牛的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

) throws QiniuException

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();

    }