Android知识点记录:七牛Android SDK调试整理

七牛Android SDK调试整理

近期项目中用到了七牛的服务,作为图片存储。在此调试了一下七牛的Android SDK,遇到了一些问题,在此整理,希望大家可以少走弯路。

建立工程

官方安卓文档链接  http://developer.qiniu.com/docs/v6/sdk/android-sdk.html#upload
我们可以直接从git上下载library工程,也可以直接导入mave或者下载jar包。此处,我们导入jar包,同时下载了library的源码包,library包提供了单元测试工具,可以让我们对一些方法有个直观的认识。下图为测试工程目录,demo是我们的测试工程。

Android知识点记录:七牛Android SDK调试整理_第1张图片


导入工程时我们要注意,由于目前Android6.0已经不对httpClient支持,导致我们的工程可能会有找不到类的情况,我们可以下载httpclient-4.4.1.1.jar ,地址如下
http://mvnrepository.com/artifact/cz.msebera.android/httpclient/4.4.1.1
参考
http://segmentfault.com/q/1010000003852205

Android知识点记录:七牛Android SDK调试整理_第2张图片

Android知识点记录:七牛Android SDK调试整理_第3张图片

到此我们的工程就建立完毕了。

建立七牛相关

注册七牛账号,创建一个项目(也就是后面我们说的 BucketName)。
Android知识点记录:七牛Android SDK调试整理_第4张图片

我们建立了vonchenchen-android-test的账号。之后可以尝试上传一张图片。此时我们已经有了域名,点击红圈中的项目,出现如下图
Android知识点记录:七牛Android SDK调试整理_第5张图片

下面我们上传一张图片,点击 “内容管理”,上传,下图我们已经上传了两张,其中第一张是通过点击“上传”上传的。
Android知识点记录:七牛Android SDK调试整理_第6张图片

现在我们使用 刚刚得到的域名+文件名已经可以访问我们的图片资源了。下面是我们的例子域名
http://7xp9ue.com1.z0.glb.clouddn.com/err_mdk.PNG
我们现在可以直接通过浏览器访问这个资源。

使用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可以通过一个在线生成工具生成。
链接如下: http://developer.qiniu.com/docs/v6/api/reference/security/upload-token.html
Android知识点记录:七牛Android SDK调试整理_第7张图片
步骤如下
Android知识点记录:七牛Android SDK调试整理_第8张图片

Android知识点记录:七牛Android SDK调试整理_第9张图片

注意bucketName就是我们上文提到的,建立七牛工程的时候的名字。此处可以设置token有效期。accessKey与secretKey在下图中的地方取
Android知识点记录:七牛Android SDK调试整理_第10张图片
最后,点击 生成token,这样就是token,其包含了我们要上传的地址和文件名等信息,所以,在实际应用上传中直接使用服务器提供的token即可,而不需要其他uri信息。

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


你可能感兴趣的:(android,图片,存储,sdk,七牛)