Skip to content

Commit 49e644d

Browse files
author
ricken
committed
update
1 parent 2062327 commit 49e644d

File tree

6 files changed

+420
-12
lines changed

6 files changed

+420
-12
lines changed

Demo/app/src/androidTest/java/com/tencent/qcloud/cosxml/cssg/PutObjectSSE.java

Lines changed: 115 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,61 @@ protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientEx
5858
*/
5959
private void putObjectSse() {
6060
//.cssg-snippet-body-start:[put-object-sse]
61-
61+
62+
// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
63+
TransferConfig transferConfig = new TransferConfig.Builder().build();
64+
// 初始化 TransferManager
65+
TransferManager transferManager = new TransferManager(cosXmlService,
66+
transferConfig);
67+
68+
String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
69+
String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键
70+
String srcPath = new File(context.getCacheDir(), "exampleobject")
71+
.toString(); //本地文件的绝对路径
72+
//若存在初始化分块上传的 UploadId,则赋值对应的 uploadId 值用于续传;否则,赋值 null
73+
String uploadId = null;
74+
75+
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, cosPath, srcPath);
76+
// 设置使用 COS 托管加密密钥的服务端加密(SSE-COS)保护数据
77+
putObjectRequest.setCOSServerSideEncryption();
78+
79+
// 上传文件
80+
COSXMLUploadTask cosxmlUploadTask = transferManager.upload(putObjectRequest, uploadId);
81+
82+
//设置上传进度回调
83+
cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
84+
@Override
85+
public void onProgress(long complete, long target) {
86+
// todo Do something to update progress...
87+
}
88+
});
89+
//设置返回结果回调
90+
cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
91+
@Override
92+
public void onSuccess(CosXmlRequest request, CosXmlResult result) {
93+
COSXMLUploadTask.COSXMLUploadTaskResult cOSXMLUploadTaskResult =
94+
(COSXMLUploadTask.COSXMLUploadTaskResult) result;
95+
}
96+
97+
@Override
98+
public void onFail(CosXmlRequest request,
99+
CosXmlClientException clientException,
100+
CosXmlServiceException serviceException) {
101+
if (clientException != null) {
102+
clientException.printStackTrace();
103+
} else {
104+
serviceException.printStackTrace();
105+
}
106+
}
107+
});
108+
//设置任务状态回调, 可以查看任务过程
109+
cosxmlUploadTask.setTransferStateListener(new TransferStateListener() {
110+
@Override
111+
public void onStateChanged(TransferState state) {
112+
// todo notify transfer state
113+
}
114+
});
115+
62116
//.cssg-snippet-body-end
63117
}
64118

@@ -67,7 +121,66 @@ private void putObjectSse() {
67121
*/
68122
private void putObjectSseC() {
69123
//.cssg-snippet-body-start:[put-object-sse-c]
70-
124+
// 服务端加密密钥
125+
String customKey = "服务端加密密钥";
126+
127+
// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
128+
TransferConfig transferConfig = new TransferConfig.Builder().build();
129+
// 初始化 TransferManager
130+
TransferManager transferManager = new TransferManager(cosXmlService,
131+
transferConfig);
132+
133+
String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
134+
String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键
135+
String srcPath = new File(context.getCacheDir(), "exampleobject")
136+
.toString(); //本地文件的绝对路径
137+
//若存在初始化分块上传的 UploadId,则赋值对应的 uploadId 值用于续传;否则,赋值 null
138+
String uploadId = null;
139+
140+
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, cosPath, srcPath);
141+
// 设置使用客户提供的加密密钥的服务端加密 (SSE-C)保护数据
142+
try {
143+
putObjectRequest.setCOSServerSideEncryptionWithCustomerKey(customKey);
144+
} catch (CosXmlClientException e) {
145+
e.printStackTrace();
146+
}
147+
148+
// 上传文件
149+
COSXMLUploadTask cosxmlUploadTask = transferManager.upload(putObjectRequest, uploadId);
150+
151+
//设置上传进度回调
152+
cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
153+
@Override
154+
public void onProgress(long complete, long target) {
155+
// todo Do something to update progress...
156+
}
157+
});
158+
//设置返回结果回调
159+
cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
160+
@Override
161+
public void onSuccess(CosXmlRequest request, CosXmlResult result) {
162+
COSXMLUploadTask.COSXMLUploadTaskResult cOSXMLUploadTaskResult =
163+
(COSXMLUploadTask.COSXMLUploadTaskResult) result;
164+
}
165+
166+
@Override
167+
public void onFail(CosXmlRequest request,
168+
CosXmlClientException clientException,
169+
CosXmlServiceException serviceException) {
170+
if (clientException != null) {
171+
clientException.printStackTrace();
172+
} else {
173+
serviceException.printStackTrace();
174+
}
175+
}
176+
});
177+
//设置任务状态回调, 可以查看任务过程
178+
cosxmlUploadTask.setTransferStateListener(new TransferStateListener() {
179+
@Override
180+
public void onStateChanged(TransferState state) {
181+
// todo notify transfer state
182+
}
183+
});
71184
//.cssg-snippet-body-end
72185
}
73186

Demo/app/src/androidTest/java/com/tencent/qcloud/cosxml/cssg/SetCustomDomain.java

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,21 @@ protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientEx
5858
*/
5959
private void setCdnDomain() {
6060
//.cssg-snippet-body-start:[set-cdn-domain]
61-
61+
String region = "ap-beijing"; // 您的存储桶地域
62+
String cdnHost = "examplebucket-1250000000.file.myqcloud.com"; // 存储桶的默认加速域名
63+
64+
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
65+
.isHttps(true)
66+
.setRegion(region)
67+
.setDebuggable(false)
68+
.setHostFormat("${bucket}.file.myqcloud.com") // 修改存储请求的域名
69+
.addHeader("Host", cdnHost) // 修改 header 中的 host 字段
70+
.builder();
71+
72+
/**
73+
* 不提供 credentialProvider 类
74+
*/
75+
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
6276
//.cssg-snippet-body-end
6377
}
6478

@@ -67,7 +81,22 @@ private void setCdnDomain() {
6781
*/
6882
private void setCdnCustomDomain() {
6983
//.cssg-snippet-body-start:[set-cdn-custom-domain]
70-
84+
85+
String region = "ap-beijing"; // 您的存储桶地域
86+
String cdnCustomDomain = "example.com"; // 自定义加速域名
87+
88+
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
89+
.isHttps(true)
90+
.setRegion(region)
91+
.setDebuggable(false)
92+
.setHostFormat(cdnCustomDomain) // cdn 默认域名 host 格式
93+
.builder();
94+
95+
/**
96+
* 不提供 credentialProvider 类
97+
*/
98+
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
99+
71100
//.cssg-snippet-body-end
72101
}
73102

@@ -76,7 +105,21 @@ private void setCdnCustomDomain() {
76105
*/
77106
private void setCustomDomain() {
78107
//.cssg-snippet-body-start:[set-custom-domain]
79-
108+
109+
String region = "ap-beijing"; // 您的存储桶地域
110+
String customDomain = "example.com"; // 自定义加速域名
111+
112+
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
113+
.isHttps(true)
114+
.setRegion(region)
115+
.setDebuggable(false)
116+
.setHostFormat(customDomain) // cdn 默认域名 host 格式
117+
.builder();
118+
119+
/**
120+
* 不提供 credentialProvider 类
121+
*/
122+
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
80123
//.cssg-snippet-body-end
81124
}
82125

Demo/app/src/androidTest/java/com/tencent/qcloud/cosxml/cssg/SetCustomHeaders.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,21 @@ protected QCloudLifecycleCredentials fetchNewCredentials() throws QCloudClientEx
5858
*/
5959
private void setCustomHeaders() {
6060
//.cssg-snippet-body-start:[set-custom-headers]
61-
61+
String region = "ap-beijing"; // 您的存储桶地域
62+
String customHeaderKey = "Host"; // 自定义 Header 的键
63+
String customHeaderValue = "examplebucket-1250000000.file.myqcloud.com"; // 自定义 Header 的值
64+
65+
CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder()
66+
.isHttps(true)
67+
.setRegion(region)
68+
.setDebuggable(false)
69+
.addHeader(customHeaderKey, customHeaderValue) // 自定义 Header
70+
.builder();
71+
72+
/**
73+
* 不提供 credentialProvider 类
74+
*/
75+
CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig);
6276
//.cssg-snippet-body-end
6377
}
6478

Demo/app/src/androidTest/java/com/tencent/qcloud/cosxml/cssg/TransferDownloadObject.java

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,67 @@ public void onStateChanged(TransferState state) {
121121
*/
122122
private void transferDownloadObjectPauseAndResume() {
123123
//.cssg-snippet-body-start:[transfer-download-object-pause-and-resume]
124-
124+
// 高级下载接口支持断点续传,所以会在下载前先发起 HEAD 请求获取文件信息。
125+
// 如果您使用的是临时密钥或者使用子账号访问,请确保权限列表中包含 HeadObject 的权限。
126+
127+
// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
128+
TransferConfig transferConfig = new TransferConfig.Builder().build();
129+
//初始化 TransferManager
130+
TransferManager transferManager = new TransferManager(cosXmlService,
131+
transferConfig);
132+
133+
String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
134+
String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键
135+
//本地目录路径
136+
String savePathDir = context.getExternalCacheDir().toString();
137+
//本地保存的文件名,若不填(null),则与 COS 上的文件名一样
138+
String savedFileName = "exampleobject";
139+
140+
Context applicationContext = context.getApplicationContext(); // application
141+
// context
142+
COSXMLDownloadTask cosxmlDownloadTask =
143+
transferManager.download(applicationContext,
144+
bucket, cosPath, savePathDir, savedFileName);
145+
146+
//设置下载进度回调
147+
cosxmlDownloadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
148+
@Override
149+
public void onProgress(long complete, long target) {
150+
// todo Do something to update progress...
151+
}
152+
});
153+
//设置返回结果回调
154+
cosxmlDownloadTask.setCosXmlResultListener(new CosXmlResultListener() {
155+
@Override
156+
public void onSuccess(CosXmlRequest request, CosXmlResult result) {
157+
COSXMLDownloadTask.COSXMLDownloadTaskResult cOSXMLDownloadTaskResult =
158+
(COSXMLDownloadTask.COSXMLDownloadTaskResult) result;
159+
}
160+
161+
@Override
162+
public void onFail(CosXmlRequest request,
163+
CosXmlClientException clientException,
164+
CosXmlServiceException serviceException) {
165+
if (clientException != null) {
166+
clientException.printStackTrace();
167+
} else {
168+
serviceException.printStackTrace();
169+
}
170+
}
171+
});
172+
//设置任务状态回调,可以查看任务过程
173+
cosxmlDownloadTask.setTransferStateListener(new TransferStateListener() {
174+
@Override
175+
public void onStateChanged(TransferState state) {
176+
// todo notify transfer state
177+
}
178+
});
179+
180+
// 在合适的时机调用 pause() 方法暂停下载
181+
cosxmlDownloadTask.pause();;
182+
183+
// 在合适的时机调用 resume() 方法恢复下载
184+
cosxmlDownloadTask.resume();
125185
//.cssg-snippet-body-end
126186
}
127187

@@ -130,7 +190,72 @@ private void transferDownloadObjectPauseAndResume() {
130190
*/
131191
private void transferBatchDownloadObjects() {
132192
//.cssg-snippet-body-start:[transfer-batch-download-objects]
133-
193+
194+
// 对象在存储桶中的位置标识符,即称对象键
195+
String[] cosPaths = new String[] {
196+
"exampleobject1",
197+
"exampleobject2",
198+
"exampleobject3",
199+
};
200+
201+
for (String cosPath : cosPaths) {
202+
203+
// 高级下载接口支持断点续传,所以会在下载前先发起 HEAD 请求获取文件信息。
204+
// 如果您使用的是临时密钥或者使用子账号访问,请确保权限列表中包含 HeadObject 的权限。
205+
206+
// 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
207+
TransferConfig transferConfig = new TransferConfig.Builder().build();
208+
//初始化 TransferManager
209+
TransferManager transferManager = new TransferManager(cosXmlService,
210+
transferConfig);
211+
212+
String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
213+
//本地目录路径
214+
String savePathDir = context.getExternalCacheDir().toString();
215+
//本地保存的文件名,若不填(null),则与 COS 上的文件名一样
216+
String savedFileName = "exampleobject";
217+
218+
Context applicationContext = context.getApplicationContext(); // application
219+
// context
220+
COSXMLDownloadTask cosxmlDownloadTask =
221+
transferManager.download(applicationContext,
222+
bucket, cosPath, savePathDir, savedFileName);
223+
224+
//设置下载进度回调
225+
cosxmlDownloadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
226+
@Override
227+
public void onProgress(long complete, long target) {
228+
// todo Do something to update progress...
229+
}
230+
});
231+
//设置返回结果回调
232+
cosxmlDownloadTask.setCosXmlResultListener(new CosXmlResultListener() {
233+
@Override
234+
public void onSuccess(CosXmlRequest request, CosXmlResult result) {
235+
COSXMLDownloadTask.COSXMLDownloadTaskResult cOSXMLDownloadTaskResult =
236+
(COSXMLDownloadTask.COSXMLDownloadTaskResult) result;
237+
}
238+
239+
@Override
240+
public void onFail(CosXmlRequest request,
241+
CosXmlClientException clientException,
242+
CosXmlServiceException serviceException) {
243+
if (clientException != null) {
244+
clientException.printStackTrace();
245+
} else {
246+
serviceException.printStackTrace();
247+
}
248+
}
249+
});
250+
//设置任务状态回调,可以查看任务过程
251+
cosxmlDownloadTask.setTransferStateListener(new TransferStateListener() {
252+
@Override
253+
public void onStateChanged(TransferState state) {
254+
// todo notify transfer state
255+
}
256+
});
257+
}
258+
134259
//.cssg-snippet-body-end
135260
}
136261

0 commit comments

Comments
 (0)