Android学习之七牛(二)——初始化设置和上传文件基本用法

虽然官方文档说明的比较详细了,我还是决定自己记录一下,可以较好的梳理条理,加深理解

转载请注明出处
[我的博客]http://www.lostbug.cn

  • 初始化
    一般情况下直接使用默认设置,不用单独配置。 可以配置超时时长、分片上传阀值等。
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, keyGen)  // keyGen 分片上传时,生成标识符,用于片记录器区分是那个文件的上传记录
                    .zone(Zone.zone0) // 设置区域,指定不同区域的上传域名、备用域名、备用IP。默认 Zone.zone0
                    .build();
// 重用 uploadManager。一般地,只需要创建一个 uploadManager 对象
UploadManager uploadManager = new UploadManager(config);
  • 上传文件
    七牛上传文件主要用到两个方法:
    一、 UploadManager.put(data, key, token, handler, options);
 /**
  * UploadManager.put参数说明:
  *
  *@data                  byte[]/String/File    数据,可以是byte数组,文件路径,文件。
  *@key                   String                保存在服务器上的资源唯一标识。请参考键值对。
  *@token                 String                服务器分配的token。
  *@completionHandler     UpCompletionHandler   上传回调函数,必填。
  *@options               UploadOptions         如果需要进度通知、crc校验、中途取消、指定mimeType则需要填写相应字段,详见UploadOptions参数说明。
         */
   二、 UploadOptions(params, mimeType, checkCrc, progressHandler, cancellationSignal);
    /**
     * UploadOptions参数说明:
     * 
     *参数                   类型                   说明
     *params               Map<String, String>  自定义变量,key必须以 x: 开始。
     *mimeType             String               指定文件的mimeType。
     *checkCrc             boolean              是否验证上传文件。
     *progressHandler      UpProgressHandler    上传进度回调。
     *cancellationSignal   UpCancellationSignal 取消上传,当isCancelled()返回true时,不再执行更多上传。
     */

现在就比较清楚了

下面主要是各种上传姿势了
- 简单上传

// 简单上传
// 重用 uploadManager。一般地,只需要创建一个 uploadManager 对象
UploadManager uploadManager = new UploadManager();
data = <File对象、或 文件路径、或 字节数组>
String key = <指定七牛服务上的文件名,或 null>;
String token = <从服务端SDK获取>;
uploadManager.put(data, key, token,
 /**
  * UpCompletionHandler参数说明
  * 
  *@key        即uploadManager.put(file, key, ...)方法指定的key。
  *@info       http请求的状态信息等,可记入日志。isOK()返回 true表示上传成功。
  *@response   七牛反馈的信息。可从中解析保存在七牛服务的key等信息,具体字段取决于上传策略的设置。
  */
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);
    }
}, null);
  • 记录上传进度
 //记录上传进度
    private void uploadProgress() {

        uploadManager.put(data, key, token, handler,
                new UploadOptions(null, null, false,
                        new UpProgressHandler() {
                            /**
                             * @param key      即uploadManager.put(file, key, ...)方法指定的key
                             * @param percent  进度
                             */
                            public void progress(String key, double percent) {
                                Log.i("qiniu", key + ": " + percent);
                            }
                        }, null));

    }
  • 取消上传
    内部代码会检测UpCancellationSignal##isCancelled()的返回值,当其返回true时,将停止上传。 可外部维护一个变量isCancelled,当点击取消按钮时,设置isCancelled = true;。如:
// 初始化、执行上传
private volatile boolean isCancelled = false;

uploadManager.put(data, key, token,handler,
    new UploadOptions(null, null, false, progressHandler,
        new UpCancellationSignal(){
            public boolean isCancelled(){
                return isCancelled;
            }
        }));


// 点击取消按钮,让 UpCancellationSignal##isCancelled() 方法返回 true ,以停止上传
private void cancell() {
    isCancelled = true;
}
  • 记录断点

分片上传中,可将各个已上传的块记录下来,再次上传时,已上传的部分不用再次上传。 断点记录类需实现 com.qiniu.android.storage.Recorder 接口。已提供保存到文件的 FileRecorder 实现。

String dirPath = <断点记录文件保存的文件夹位置>
Recorder recorder = new FileRecorder(dirPath);


//默认使用 key 的url_safe_base64编码字符串作为断点记录文件的文件名。
//避免记录文件冲突(特别是key指定为null时),也可自定义文件名(下方为默认实现):
KeyGenerator keyGen = new KeyGenerator(){
    public String gen(String key, File file){
        // 不必使用url_safe_base64转换,uploadManager内部会处理
        // 该返回值可替换为基于key、文件内容、上下文的其它信息生成的文件名
        return key + "_._" + new StringBuffer(file.getAbsolutePath()).reverse();
    }
};

// 重用 uploadManager。一般地,只需要创建一个 uploadManager 对象
//UploadManager uploadManager = new UploadManager(recorder);  // 1
//UploadManager uploadManager = new UploadManager(recorder, keyGen); // 2
// 或 在初始化时指定:
Configuration config = new Configuration.Builder()
                    // recorder 分片上传时,已上传片记录器
                    // keyGen 分片上传时,生成标识符,用于片记录器区分是那个文件的上传记录
                    .recorder(recorder, keyGen)  
                    .build();

UploadManager uploadManager = new UploadManager(config);

uploadManager.put(data, key, ...)

初始化设置和上传文件的基本用法就记录到这啦!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rockan007/article/details/51840147
个人分类: android七牛
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭