注意
开发准备
SDK 获取
开发准备
1. SDK 支持 Android 2.2 及以上版本的手机系统。
2. 手机必须要有网络(GPRS、3G 或 WI-FI 网络等)。
3. 手机可以没有存储空间,但会使部分功能无法正常工作。
4. 从控制台获取 APPID、SecretId、SecretKey,详情参考权限控制。
SDK 配置
配置工程导入下列 jar 包:
cos-android-sdk1.4.3.18.jar
okhttp-3.2.0.jar
okio-1.6.0.jar
sha1utils.jar
jniLibs(对应的 sha1 值计算的 .so 库)
SDK 需要网络访问相关的一些权限,需要在 AndroidManifest.xml 中增加如下权限声明:
<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.WAKE_LOCK"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
初始化
进行操作之前需要实例化 COSClient 和 COSClientConfig。
实例化 COSClientConfig
调用 COSClientConfig() 方法实例化 COSClientConfig 对象。
COSClientConfig config = new COSClientConfig();
配置 COSClientConfig
方法 | 方法描述 |
setEndPoint(String endPoint) | 设置园区:华南 "gz", 华北 "tj", 华东"sh",新加坡"sgp"。SDK 中默认为华南地区 |
setConnectionTimeout(int connectionTimeout) | 连接超时设置 (毫秒) |
setSocketTimeout(int socketTimeout) | 读取超时设置 (毫秒) |
setMaxConnectionsCount(int maxConnectionsCount) | 并发数大小设置 |
setMaxRetryCount(int maxRetryCount) | 失败请求重试次数 |
setHttpProtocol(String httpProtocol) | 设置请求协议类型:默认为http请求,即"http://";若为https请求,则为 "https://" |
实例化 COSClient
调用 COSClient(Context context, String appid, COSClientConfig config, String peristenceId) 方法实例化 COSClient 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
context | Context | 是 | 上下文 |
appid | String | 是 | 腾讯云注册的 AppID |
config | COSClientConfig | 否 | 配置设置 |
persistenceId | String | 否 | 持久化 ID,每个 COSClient 需设置一个唯一的 ID 用于持久化保存未完成任务 列表,以便应用退出重进后能够继续进行上传;传入为 Null,则不会进行持久化保存 |
示例
//创建COSClientConfig对象,根据需要修改默认的配置参数COSClientConfig config = new COSClientConfig();//设置园区config.setEndPoint(COSEndPoint.COS_GZ);Context context = getApplicationContext();String appid = "腾讯云注册的appid";String peristenceId = "持久化Id";//创建COSlient对象,实现对象存储的操作COSClient cos = new COSClient(context,appid,config,peristenceId);
快速入门
初始化 COSClient
String appid = "腾讯云注册的appid";Context context = getApplicationContext();String peristenceId = "持久化Id";//创建COSClientConfig对象,根据需要修改默认的配置参数COSClientConfig config = new COSClientConfig();//如设置园区config.setEndPoint(COSEndPoint.COS_GZ);COSClient cos = new COSClient(context,appid,config,peristenceId);
上传文件
String bucket = "cos空间名称";String cosPath = "远端路径,即存储到cos上的路径";String srcPath = "本地文件的绝对路径";String sign = "签名,此处使用多次签名";PutObjectRequest putObjectRequest = new PutObjectRequest();putObjectRequest.setBucket(bucket);putObjectRequest.setCosPath(cosPath);putObjectRequest.setSrcPath(srcPath);putObjectRequest.setSign(sign);putObjectRequest.setListener(new IUploadTaskListener(){@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {PutObjectResult result = (PutObjectResult) cosResult;if(result != null){StringBuilder stringBuilder = new StringBuilder();stringBuilder.append(" 上传结果: ret=" + result.code + "; msg =" +result.msg + "\\n");stringBuilder.append(" access_url= " + result.access_url == null ? "null" :result.access_url + "\\n");stringBuilder.append(" resource_path= " + result.resource_path == null ? "null" :result.resource_path + "\\n");stringBuilder.append(" url= " + result.url == null ? "null" :result.url);Log.w("TEST",stringBuilder.toString());}}@Overridepublic void onFailed(COSRequest COSRequest, final COSResult cosResult) {Log.w("TEST","上传出错: ret =" +cosResult.code + "; msg =" + cosResult.msg);}@Overridepublic void onProgress(COSRequest cosRequest, final long currentSize, final long totalSize) {float progress = (float)currentSize/totalSize;progress = progress *100;Log.w("TEST","进度: " + (int)progress + "%");}});PutObjectResult result = cos.PutObject(putObjectRequest);
下载文件
String downloadURl = "下载文件的URL";String savePath = "本地保存文件的路径";String sign = "开启token防盗链了,则需要签名;否则,不需要";GetObjectRequest getObjectRequest = new GetObjectRequest(downloadURl,savePath);getObjectRequest.setSign(null);getObjectRequest.setListener(new IDownloadTaskListener() {@Overridepublic void onProgress(COSRequest cosRequest, final long currentSize, final long totalSize) {float progress = currentSize / (float)totalSize;progress = progress * 100;progressText.setText("progress =" + (int) (progress) + "%");Log.w("TEST", "progress =" + (int) (progress) + "%");}@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {Log.w("TEST","code =" + cosResult.code + "; msg =" + cosResult.msg);}@Overridepublic void onFailed(COSRequest COSRequest, COSResult cosResult) {Log.w("TEST","code =" + cosResult.code + "; msg =" + cosResult.msg);}});GetObjectResult getObjectResult = cos.getObject(getObjectRequest);
生成签名
签名类型:
类型 | 含义 |
多次有效 | 有效时间内多次始终有效 |
单次有效 | 与资源URL绑定,一次有效 |
签名获取:
目录操作
创建目录
方法原型
调用此接口可在指定的 bucket 下创建目录,具体步骤如下:
1. 调用 CreateDirRequest() 实例化 CreateDirRequest 对象。
2. 调用 COSClient 的 createDir 方法,传入 CreateDirRequest,返回 CreateDirResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云APPID |
bucket | String | 是 | 目录所属bucket 名称 |
cosPath | String | 是 | 需要创建目录的路径 |
biz_attr | String | 否 | 目录绑定的属性信息,由用户维护 |
sign | String | 是 | 签名信息,此处使用多次签名 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过CreateDirResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
ctime | long(Unix时间戳) | 创建时间 |
示例
CreateDirRequest createDirRequest = new CreateDirRequest();createDirRequest.setBucket(bucket);createDirRequest.setCosPath(cosPath);createDirRequest.setBiz_attr(biz_attr);createDirRequest.setSign(sign);createDirRequest.setListener(new ICmdTaskListener() {public void onSuccess(COSRequest cosRequest, COSResult cosResult) {final CreateDirResult createDirResult = (CreateDirResult) cosResult;Log.w("TEST","目录创建成功: ret=" + createDirResult.code + "; msg=" + createDirResult.msg+"ctime = " + createDirResult.ctime));}@Overridepublic void onFailed(COSRequest COSRequest, final COSResult cosResult) {Log.w("TEST","目录创建失败: ret=" + cosResult.code + "; msg=" + cosResult.msg);}});CreateDirResult result = cos.createDir(createDirRequest);
目录列表查询
方法原型
调用此接口可查询指定目录下的列表信息,具体步骤如下:
1. 调用 ListDirRequest() 实例化 ListDirRequest 对象。
2. 调用 COSClient 的 listDir 方法,传入 ListDirRequest,返回 ListDirResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云APPID |
bucket | String | 是 | 目录所属bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
num | int | 否 | 返回的数目,默认为1000,最大1000 |
content | String | 否 | 透传字段,首次拉取必须清空。拉取下一页,需要将前一页返回值中的context透传到参数中 |
prefix | String | 否 | 前缀查询的字符串 |
sign | String | 是 | 签名信息,此处使用多次签名 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过ListDirResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
content | String | 透传字段 |
listover | boolean | 标识是否还有数据, true:列举结束;false:还有数据 |
infos | List | 列举目录列表中文件或文件夹的属性 |
示例
ListDirRequest listDirRequest = new ListDirRequest();listDirRequest.setBucket(bucket);listDirRequest.setCosPath(cosPath);listDirRequest.setNum(100);listDirRequest.setContent("");listDirRequest.setSign(sign);listDirRequest.setListener(new ICmdTaskListener() {@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {//查询成功ListDirResult listObjectResult = (ListDirResult) cosResult;if(listObjectResult.infos != null && listObjectResult.infos.size() > 0) {for(int i = 0; i < length; i++){String str = listObjectResult.infos.get(i);try {JSONObject jsonObject = new JSONObject(str);if(jsonObject.has("sha")){//当前搜索的结果是文件}else{//当前搜索的结果是文件夹}} catch (JSONException e) {e.printStackTrace();}}}if (!listover) {// 存在下一页保存当前页的状态信息String content = result.content;}}@Overridepublic void onFailed(COSRequest COSRequest, final COSResult cosResult) {Log.w("TEST",目录查询失败:ret=" + cosResult.code + "; msg =" + cosResult.msg);}});// 支持前缀查询listDirRequest.setPrefix(prefix);ListDirResult result=cos.listDir(listDirRequest);
目录更新
方法原型
调用此接口可更新指定目录的信息,具体步骤如下:
1. 调用 UpdateObjectRequest() 实例化 UpdateObjectRequest 对象。
2. 调用 COSClient 的 updateObject 方法,传入 UpdateObjectRequest,返回 UpdateObjectResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云APPID |
bucket | String | 是 | 目录所属bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
sign | String | 是 | 签名信息,此处使用单次签名 |
bizAttr | String | 否 | 目录绑定的属性信息 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过UpdateObjectResult对象的成员变量成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
示例
UpdateObjectRequest updateObjectRequest = new UpdateObjectRequest();updateObjectRequest.setBucket(bucket);updateObjectRequest.setCosPath(cosPath);updateObjectRequest.setBizAttr(biz_attr);updateObjectRequest.setSign(onceSign);updateObjectRequest.setListener(new ICmdTaskListener() {@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {//更新成功Log.w("TEST", cosResult.code+" : "+cosResult.msg);}@Overridepublic void onFailed(COSRequest COSRequest, COSResult cosResult) {//更新失败Log.w("TEST", cosResult.code+" : "+cosResult.msg);}});UpdateObjectResult result = cos.updateObject(updateObjectRequest);
目录查询
方法原型
调用此接口可查询指定目录的信息,具体步骤如下:
1. 调用 GetObjectMetadataRequest() 方法实例化 GetObjectMetadataRequest 对象。
2. 调用 COSClient 的 getObjectMetadata方法,传入 GetObjectMetadataRequest,返回 GetObjectMetadataResult对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云APPID |
bucket | String | 是 | 目录所属bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
sign | String | 是 | 签名信息,此处使用多次签名 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过GetObjectMetadataResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
biz_attr | String | 目录绑定的属性信息 |
ctime | long(Unix时间戳) | 创建时间 |
mtime | long(Unix时间戳) | 最后一次修改时间 |
示例
GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest();getObjectMetadataRequest.setBucket(bucket);getObjectMetadataRequest.setCosPath(cosPath);getObjectMetadataRequest.setSign(sign);getObjectMetadataRequest.setListener(new ICmdTaskListener() {@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {GetObjectMetadataResult result = (GetObjectMetadataResult) cosResult;StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("code=" + result.code + "; msg=" +result.msg + "\\n");stringBuilder.append("ctime =" +result.ctime + "; mtime=" +result.mtime + "\\n" );stringBuilder.append("biz_attr=" + result.biz_attr == null ? "" : result.biz_attr );Log.w("TEST",stringBuilder.toString());}@Overridepublic void onFailed(COSRequest cosRequest, final COSResult cosResult) {Log.w("TEST", cosResult.code+" : "+cosResult.msg);}});GetObjectMetadataRequest result = cos.getObjectMetadata(getObjectMetadataRequest);
目录删除
方法原型
调用此接口可删除指定目录,具体步骤如下,注意只能删除空目录:
1. 调用 RemoveEmptyDirRequest() 方法实例化 RemoveEmptyDirRequest 对象。
2. 调用 COSClient 的 removeEmptyDir 方法,传入 RemoveEmptyDirRequest,返回 RemoveEmptyDirResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云 APPID |
bucket | String | 是 | 目录所属 bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
sign | String | 是 | 签名信息,此处使用单次签名 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过RemoveEmptyDirResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
示例
RemoveEmptyDirRequest removeEmptyDirRequest = new RemoveEmptyDirRequest();removeEmptyDirRequest.setBucket(bucket);removeEmptyDirRequest.setCosPath(cosPath);removeEmptyDirRequest.setSign(onceSign);removeEmptyDirRequest.setListener(new ICmdTaskListener() {@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {final DeleteObjectResult removeEmptyDirResult = (DeleteObjectResult) cosResult;Log.w("TEST","removeDir 结果: ret=" + removeEmptyDirResult.code + "; msg=" + removeEmptyDirResult.msg );}@Overridepublic void onFailed(COSRequest COSRequest, final COSResult cosResult) {Log.w("TEST","目录删除失败:ret=" + cosResult.code + "; msg =" + cosResult.msg);}});RemoveEmptyDirResult result = cos.removeEmptyDir(removeEmptyDirRequest);
文件操作
文件上传
方法原型
调用此接口上传指定的文件,具体步骤如下:
1. 调用 PutObjectRequest() 方法实例化 PutObjectRequest对象。
2. 调用 COSClient 的 putObject 方法,传入 PutObjectRequest,返回 PutObjectResult对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云 APPID |
bucket | String | 是 | 目录所属 bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
srcPath | String | 是 | 本地绝对路径 |
slice_size | int | 否 | 分片上传时,设置的分片大小,默认为:1M |
sign | String | 是 | 签名信息,此处使用多次签名 |
listener | IUploadTaskListener | 否 | 结果回调 |
返回结果说明
通过PutObjectResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
access_url | String | 访问文件的URL |
url | String | 操作文件的url |
示例
PutObjectRequest putObjectRequest = new PutObjectRequest();putObjectRequest.setBucket(bucket);putObjectRequest.setCosPath(cosPath);putObjectRequest.setSrcPath(srcPath);putObjectRequest.setSign(sign);/* 设置是否允许覆盖同名文件: "0",允许覆盖;"1",不允许覆盖;putObjectRequest.setInsertOnly("1");//设置是否开启分片上传putObjectRequest.setSliceFlag(true);//设置是否分片上传:true,分片上传;false,简单文件上传putObjectRequest.setSlice_size(1024*1024);//分片上传时,分片的大小*/putObjectRequest.setListener(new IUploadTaskListener(){@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {PutObjectResult result = (PutObjectResult) cosResult;StringBuilder stringBuilder = new StringBuilder();stringBuilder.append(" 上传结果: ret=" + result.code + "; msg =" +result.msg + "\\n");stringBuilder.append(" access_url= " + result.access_url + "\\n");stringBuilder.append(" resource_path= " + result.resource_path + "\\n");stringBuilder.append(" url= " result.url);Log.w("TEST",stringBuilder.toString();}@Overridepublic void onFailed(COSRequest COSRequest, final COSResult cosResult) {Log.w("TEST","上传出错: ret =" +cosResult.code + "; msg =" + cosResult.msg);}@Overridepublic void onProgress(COSRequest cosRequest, final long currentSize, final long totalSize) {float progress = (float)currentSize/totalSize;progress = progress *100;Log.w("TEST","进度: " + (int)progress + "%");}});PutObjectResult result = cos.putObject(putObjectRequest);
文件更新
方法原型
调用此接口可更新指定文件信息,具体步骤如下:
1. 调用 UpdateObjectRequest() 方法实例化 UpdateObjectRequest 对象。
2. 调用 COSClient 的 updateObject 方法,传入 UpdateObjectRequest,返回 UpdateObjectResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云 APPID |
bucket | String | 是 | 目录所属 bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
sign | String | 是 | 签名信息,此处使用单次签名 |
bizAttr | String | 否 | 目录绑定的属性信息 |
authority | String | 否 | 文件操作权限,与 bucket 拥有相同的权限(COSAuthority.EINVALID),私有读写权限(COSAuthority.EWRPRIVATE),私有写公有读权限(COSAuthority.EWPRIVATERPUBLIC) |
custom_headers | Map<String,String> | 否 | 文件自定义的header: 如Cache-Control, Content-Disposition,Content-Language,x-cos-meta-。 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过UpdateObjectResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
示例
UpdateObjectRequest updateObjectRequest = new UpdateObjectRequest();updateObjectRequest.setBucket(bucket);updateObjectRequest.setCosPath(cosPath);updateObjectRequest.setBizAttr(biz_attr);updateObjectRequest.setAuthority(authority);updateObjectRequest.setCustomHeader(customer);updateObjectRequest.setSign(onceSign);updateObjectRequest.setListener(new ICmdTaskListener() {@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {Log.w("TEST", cosResult.code+" : "+cosResult.msg);}@Overridepublic void onFailed(COSRequest COSRequest, COSResult cosResult) {Log.w("TEST", cosResult.code+" : "+cosResult.msg);}});UpdateObjectResult result= cos.updateObject(updateObjectRequest);
文件查询
方法原型
调用此接口可查询指定文件信息,具体步骤如下:
1. 调用 GetObjectMetadataRequest() 方法实例化 GetObjectMetadataRequest 对象。
2. 调用 COSClien t的 getObjectMetadata 方法,传入 GetObjectMetadataRequest,返回 GetObjectMetadataResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云APPID |
bucket | String | 是 | 目录所属bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
sign | String | 是 | 签名信息,此处使用多次签名 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过GetObjectMetadataResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
biz_attr | String | 目录绑定的属性信息 |
ctime | long(Unix时间戳) | 创建时间 |
mtime | long(Unix时间戳) | 最后一次修改时间 |
sha | String | 文件的sha值 |
customs_headers | Map<String,String> | 文件的头部属性 |
filelen | int | 文件的长度大小 |
示例
GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest();getObjectMetadataRequest.setBucket(bucket);getObjectMetadataRequest.setCosPath(cosPath);getObjectMetadataRequest.setSign(sign);getObjectMetadataRequest.setListener(new ICmdTaskListener() {@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {GetObjectMetadataResult result = (GetObjectMetadataResult) cosResult;StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("code=" + result.code + "; msg=" +result.msg + "\\n");stringBuilder.append("ctime =" +result.ctime + "; mtime=" +result.mtime + "\\n" );stringBuilder.append("biz_attr=" + result.biz_attr == null ? "" : result.biz_attr );stringBuilder.append("sha=" + result.sha);Log.w("TEST",stringBuilder.toString());}@Overridepublic void onFailed(COSRequest cosRequest, final COSResult cosResult) {Log.w("TEST", cosResult.code+" : "+cosResult.msg);}});GetObjectMetadataRequest result=cos.getObjectMetadata(getObjectMetadataRequest);
文件删除
方法原型
调用此接口可删除指定文件,具体步骤如下:
1. 调用 DeleteObjectRequest() 方法实例化 DeleteObjectRequest 对象。
2. 调用 COSClient 的 deleteObject 方法,传入 DeleteObjectRequest,回 DeleteObjectResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
appid | String | 是 | 腾讯云APPID |
bucket | String | 是 | 目录所属bucket 名称 |
cosPath | String | 是 | 远程相对路径 |
sign | String | 是 | 签名信息,此处单次签名 |
listener | ICmdTaskListener | 否 | 结果回调 |
返回结果说明
通过DeleteObjectResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
示例
DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest();deleteObjectRequest.setBucket(bucket);deleteObjectRequest.setCosPath(cosPath);deleteObjectRequest.setSign(onceSign);deleteObjectRequest.setListener(new ICmdTaskListener() {@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {Log.w("TEST", cosResult.code+" : "+cosResult.msg);}@Overridepublic void onFailed(COSRequest COSRequest, COSResult cosResult) {Log.w("TEST", cosResult.code+" : "+cosResult.msg);}});DeleteObjectResult result = cos.deleteObject(deleteObjectRequest);
文件下载
方法原型
调用此接口可下载指定文件,具体步骤如下:
1. 调用 GetObjectRequest(String downloadURl,String savePath) 方法实例化 GetObjectRequest对象。
2. 调用 COSClient 的 getObject 方法,传入 GetObjectRequest,返回 GetObjectResult 对象。
参数说明
参数名称 | 类型 | 是否必填 | 参数描述 |
downloadUrl | String | 是 | 下载文件的URL |
localPath | String | 是 | 本地保存文件的绝对地址 |
sign | String | 否 | 签名信息:开启了防盗链则需要,否则不需要 |
listener | IDownloadTaskListener | 否 | 结果回调 |
返回结果说明
通过GetObjectResult对象的成员变量返回请求结果。
成员变量名称 | 类型 | 变量说明 |
code | String | 结果码 |
msg | String | 详细结果信息 |
示例
GetObjectRequest getObjectRequest = new GetObjectRequest(downloadURl,savePath);getObjectRequest.setSign(null);getObjectRequest.setListener(new IDownloadTaskListener() {@Overridepublic void onProgress(COSRequest cosRequest, final long currentSize, final long totalSize) {float progress = currentSize / (float)totalSize;progress = progress * 100;progressText.setText("progress =" + (int) (progress) + "%");Log.w("TEST", "progress =" + (int) (progress) + "%");}@Overridepublic void onSuccess(COSRequest cosRequest, COSResult cosResult) {Log.w("TEST","code =" + cosResult.code + "; msg =" + cosResult.msg);}@Overridepublic void onFailed(COSRequest COSRequest, COSResult cosResult) {Log.w("TEST","code =" + cosResult.code + "; msg =" + cosResult.msg);}});GetObjectResul result = cos.getObject(getObjectRequest);