七牛官方安卓上传功能文档链接 http://developer.qiniu.com/docs/v6/sdk/android-sdk.html#upload
我们可以直接从git上下载library工程,也可以直接导入mave或者下载jar包。此处,我们导入jar包,同时下载了library的源码包,library包提供了单元测试工具,可以让我们对一些方法有个直观的认识。下图为测试工程目录,demo是我们的测试工程。
在导入工程时我们要注意,由于目前Android6.0已经不对httpClient支持,导致我们的工程可能会有找不到类的情况,我们可以下载httpclient-4.4.1.1.jar ,地址如下
代码如下:
/**
* 初始化上传参数
*/
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);
}