七牛アップロードcrc 32校正説明と使い方

4451 ワード

多くのユーザーは七牛のcrc 32校正機能をどのように使うか分からないが、この文章では主にcrc 32の役割と使用方法を紹介する.
まずcrc 32に関する概念はこの文章を参考にして詳しく紹介することができる:CRC 32
七牛こちらにcrc 32をアップロードすると、アップロード前にローカルファイルのcrc 32を計算し、七牛後ファイルにアップロードされたcrc 32と比較し、両者が異なると保存されず406に戻る:アップロードされたデータCRC 32はエラーを検証する.
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
具体的には、七牛側のcrc 32の設定後にcrc 32およびパラメータ伝達を計算する方法を参照してください.https://github.com/qiniu/java-sdk/blob/43713ccf93cf17fd21ddd919434e1df96d291ead/src/main/java/com/qiniu/storage/FormUploader.java#L78-L99
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();

    }