Android知識點記錄:七牛Android SDK調試整理

七牛Android SDK調試整理

近期項目中用到了七牛的服務,作爲圖片存儲。在此調試了一下七牛的Android SDK,遇到了一些問題,在此整理,希望大家可以少走彎路。

建立工程

我們可以直接從git上下載library工程,也可以直接導入mave或者下載jar包。此處,我們導入jar包,同時下載了library的源碼包,library包提供了單元測試工具,可以讓我們對一些方法有個直觀的認識。下圖爲測試工程目錄,demo是我們的測試工程。



導入工程時我們要注意,由於目前Android6.0已經不對httpClient支持,導致我們的工程可能會有找不到類的情況,我們可以下載httpclient-4.4.1.1.jar ,地址如下
參考




到此我們的工程就建立完畢了。

建立七牛相關

註冊七牛賬號,創建一個項目(也就是後面我們說的 BucketName)。


我們建立了vonchenchen-android-test的賬號。之後可以嘗試上傳一張圖片。此時我們已經有了域名,點擊紅圈中的項目,出現如下圖


下面我們上傳一張圖片,點擊 “內容管理”,上傳,下圖我們已經上傳了兩張,其中第一張是通過點擊“上傳”上傳的。


現在我們使用 剛剛得到的域名+文件名已經可以訪問我們的圖片資源了。下面是我們的例子域名
我們現在可以直接通過瀏覽器訪問這個資源。

使用App上傳圖片

我們可以參考官網的API文檔建立一個表單提交。代碼如下
    /**
     * 初始化上傳參數
     */
    private void init(){

        Recorder recorder = new Recorder(){
            @Override
            public void set(String s, byte[] bytes) {
            }
            @Override
            public byte[] get(String s) {
                return new byte[0];
            }
            @Override
            public void del(String s) {
            }
        };

        //上傳配置
        Configuration config = new Configuration.Builder()
                .chunkSize(256 * 1024)  //分片上傳時,每片的大小。 默認 256K
                .putThreshhold(512 * 1024)  // 啓用分片上傳閥值。默認 512K
                .connectTimeout(10) // 鏈接超時。默認 10秒
                .responseTimeout(60) // 服務器響應超時。默認 60秒
                .recorder(recorder)  // recorder 分片上傳時,已上傳片記錄器。默認 null
                .recorder(recorder, null)  // keyGen 分片上傳時,生成標識符,用於片記錄器區分是那個文件的上傳記錄
                .zone(Zone.zone0) // 設置區域,指定不同區域的上傳域名、備用域名、備用IP。默認 Zone.zone0
                .build();
        // 重用 uploadManager。一般地,只需要創建一個 uploadManager 對象
        mUploadManager = new UploadManager(config);
    }

    /***
     * 表單上傳
     */
    private void upload(){
        // 重用 uploadManager。一般地,只需要創建一個 uploadManager 對象
        UploadManager uploadManager = new UploadManager();
        //data = <File對象、或 文件路徑、或 字節數組>
        String data = FILE_SAVEPATH_UPLOAD + "upload.jpg";    //FILE_SAVEPATH_UPLOAD路徑下的 upload.jpg
        String key = "my_upload.jpg";                            //在七牛上顯示的名字
        String token = mToken;                                    //上傳token
        uploadManager.put(data, 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);

                        Toast.makeText(MainActivity.this, "upload success !!!", Toast.LENGTH_SHORT).show();
                    }
                }, null);
    }

我們直接使用路徑傳送圖片,通過key可以直接指定在七牛管理端的名字,並且我們訪問也是用的這個名字。現在萬事具備,最日狗的就是就是如何生成token了。在sdk中我們發現測試token可以通過一個在線生成工具生成。
步驟如下



注意bucketName就是我們上文提到的,建立七牛工程的時候的名字。此處可以設置token有效期。accessKey與secretKey在下圖中的地方取

最後,點擊 生成token,這樣就是token,其包含了我們要上傳的地址和文件名等信息,所以,在實際應用上傳中直接使用服務器提供的token即可,而不需要其他uri信息。

工程鏈接:http://download.csdn.net/detail/lidec/9365265


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章