Skip to content

Commit a905bd4

Browse files
authored
Merge pull request #196 from tencentyun/dev/update_demo
update Demo
2 parents d17a260 + cc8a3d5 commit a905bd4

File tree

4 files changed

+162
-30
lines changed

4 files changed

+162
-30
lines changed

src/main/java/com/qcloud/cos/demo/GetObjectDemo.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@ public class GetObjectDemo {
2020
private static COSClient cosClient = createClient();
2121

2222
public static void main(String[] args) {
23-
getObjectToFileDemo();
23+
try {
24+
getObjectToFileDemo();
25+
} catch (Exception e) {
26+
e.printStackTrace();
27+
} finally {
28+
cosClient.shutdown();
29+
}
2430
}
2531

2632
private static COSClient createClient() {
@@ -37,14 +43,19 @@ private static COSClient createClient() {
3743
private static void getObjectToFileDemo() {
3844
String key = "test/my_test.json";
3945
String bucketName = "mybucket-12500000000";
40-
boolean useTrafficLimit = false;
4146
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
42-
if(useTrafficLimit) {
43-
getObjectRequest.setTrafficLimit(8*1024*1024);
47+
// 设置下载的单链接限速(如有需要),不需要可忽略
48+
getObjectRequest.setTrafficLimit(8*1024*1024);
49+
50+
try {
51+
File localFile = new File("my_test.json");
52+
ObjectMetadata objectMetadata = cosClient.getObject(getObjectRequest, localFile);
53+
System.out.println(objectMetadata.getContentLength());
54+
} catch (CosServiceException cse) {
55+
cse.printStackTrace();
56+
} catch (CosClientException cce) {
57+
cce.printStackTrace();
4458
}
45-
File localFile = new File("my_test.json");
46-
ObjectMetadata objectMetadata = cosClient.getObject(getObjectRequest, localFile);
47-
System.out.println(objectMetadata.getContentLength());
4859
}
4960

5061
private static void getObjectDemo() throws IOException {
Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
11
package com.qcloud.cos.demo;
22

3+
import java.io.ByteArrayInputStream;
34
import java.io.File;
4-
import java.util.Date;
5+
import java.io.InputStream;
56

67
import com.qcloud.cos.COSClient;
78
import com.qcloud.cos.ClientConfig;
89
import com.qcloud.cos.auth.BasicCOSCredentials;
910
import com.qcloud.cos.auth.COSCredentials;
10-
import com.qcloud.cos.model.COSObject;
11-
import com.qcloud.cos.model.GetObjectRequest;
11+
import com.qcloud.cos.exception.CosClientException;
12+
import com.qcloud.cos.exception.CosServiceException;
1213
import com.qcloud.cos.model.ObjectMetadata;
1314
import com.qcloud.cos.model.PutObjectRequest;
1415
import com.qcloud.cos.model.PutObjectResult;
1516
import com.qcloud.cos.region.Region;
1617

1718
public class PutObjectDemo {
18-
19+
private static String bucketName = "examplebucket-12500000000";
1920
private static COSClient cosClient = createCli();;
2021

22+
public static void main(String[] args) {
23+
try {
24+
putLocalFileDemo();
25+
} catch (Exception e) {
26+
e.printStackTrace();
27+
} finally {
28+
cosClient.shutdown();
29+
}
30+
}
31+
2132
private static COSClient createCli() {
2233
return createCli("ap-shanghai");
2334
}
@@ -31,30 +42,43 @@ private static COSClient createCli(String region) {
3142
return new COSClient(cred, clientConfig);
3243
}
3344

34-
private static void putObjectDemo() {
35-
String bucketName = "examplebucket-12500000000";
45+
private static void putLocalFileDemo() {
3646
String key = "abc/abc.txt";
37-
3847
String localPath = "abc.txt";
3948

40-
ObjectMetadata objectMetadata = new ObjectMetadata();
41-
objectMetadata.setHeader("expires", new Date(1660000000000L));
42-
4349
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, new File(localPath));
44-
putObjectRequest.withMetadata(objectMetadata);
45-
46-
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
47-
48-
System.out.println(putObjectResult.getRequestId());
50+
try {
51+
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
52+
System.out.println(putObjectResult.getRequestId());
53+
} catch (CosServiceException cse) {
54+
cse.printStackTrace();
55+
} catch (CosClientException cce) {
56+
cce.printStackTrace();
57+
}
58+
}
4959

50-
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
51-
COSObject cosObject = cosClient.getObject(getObjectRequest);
52-
System.out.println(cosObject.getObjectMetadata().getRequestId());
60+
private static void putInputStreamDemo() {
61+
String key = "abc/def.txt";
62+
// 这里创建一个 ByteArrayInputStream 来作为示例,实际中这里应该是您要上传的 InputStream 类型的流
63+
int inputStreamLength = 1024 * 1024;
64+
byte data[] = new byte[inputStreamLength];
65+
InputStream inputStream = new ByteArrayInputStream(data);
5366

54-
cosClient.shutdown();
55-
}
67+
ObjectMetadata objectMetadata = new ObjectMetadata();
68+
// 上传的流如果能够获取准确的流长度,则推荐一定填写 content-length
69+
// 如果确实没办法获取到,则下面这行可以省略,但同时高级接口也没办法使用分块上传了
70+
objectMetadata.setContentLength(inputStreamLength);
5671

57-
public static void main(String[] args) {
58-
putObjectDemo();
72+
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, inputStream, objectMetadata);
73+
// 设置单链接限速(如有需要),不需要可忽略
74+
putObjectRequest.setTrafficLimit(8*1024*1024);
75+
try {
76+
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
77+
System.out.println(putObjectResult.getRequestId());
78+
} catch (CosServiceException e) {
79+
e.printStackTrace();
80+
} catch (CosClientException e) {
81+
e.printStackTrace();
82+
}
5983
}
6084
}

src/main/java/com/qcloud/cos/demo/SelectObjectContentDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ private static void selectJsonContentDemo() throws Exception {
106106
"{\"name\":\"xiaowang\",\"mathScore\":93,\"musicScore\":85}\n" +
107107
"{\"name\":\"xiaoli\",\"mathScore\":82,\"musicScore\":95}\n";
108108
cosclient.putObject(bucketName, key, csvContent);
109-
String query = "select * from COSObject s where mathScore > 85'";
109+
String query = "select * from COSObject s where mathScore > '85'";
110110

111111
SelectObjectContentRequest request = new SelectObjectContentRequest();
112112
request.setBucketName(bucketName);
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.qcloud.cos.demo;
2+
3+
import com.qcloud.cos.COSClient;
4+
import com.qcloud.cos.ClientConfig;
5+
import com.qcloud.cos.auth.BasicCOSCredentials;
6+
import com.qcloud.cos.auth.COSCredentials;
7+
import com.qcloud.cos.endpoint.UserSpecifiedEndpointBuilder;
8+
import com.qcloud.cos.exception.CosClientException;
9+
import com.qcloud.cos.exception.CosServiceException;
10+
import com.qcloud.cos.http.HttpProtocol;
11+
import com.qcloud.cos.model.GetObjectRequest;
12+
import com.qcloud.cos.model.PutObjectRequest;
13+
import com.qcloud.cos.model.UploadResult;
14+
import com.qcloud.cos.region.Region;
15+
import com.qcloud.cos.transfer.Download;
16+
import com.qcloud.cos.transfer.TransferManager;
17+
import com.qcloud.cos.transfer.Upload;
18+
19+
import java.util.concurrent.ExecutorService;
20+
import java.util.concurrent.Executors;
21+
import java.io.File;
22+
23+
public class UserSpecifiedEndpointDemo {
24+
private static String bucketName = "mybucket-12500000000";
25+
26+
private static String key = "exampleobject";
27+
28+
private static TransferManager transferManager = createTransferManager();
29+
30+
public static void main(String[] args) {
31+
try {
32+
putObjectDemo();
33+
getObjectDemo();
34+
} catch (Exception e) {
35+
e.printStackTrace();
36+
} finally {
37+
transferManager.shutdownNow();
38+
}
39+
}
40+
41+
private static void putObjectDemo() {
42+
File localFile = new File("/path/to/localFile");
43+
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
44+
try {
45+
// 返回一个异步结果 Upload , 可同步的调用 waitForUploadResult 等待 upload 结束, 成功返回 UploadResult , 失败抛出异常.
46+
Upload upload = transferManager.upload(putObjectRequest);
47+
UploadResult uploadResult = upload.waitForUploadResult();
48+
System.out.printf("RequestId : %s\n", uploadResult.getRequestId());
49+
System.out.println(uploadResult.getETag());
50+
System.out.println(uploadResult.getCrc64Ecma());
51+
} catch (CosServiceException e) {
52+
e.printStackTrace();
53+
} catch (CosClientException e) {
54+
e.printStackTrace();
55+
} catch (InterruptedException e) {
56+
e.printStackTrace();
57+
}
58+
}
59+
60+
private static void getObjectDemo() {
61+
File downloadFile = new File("/path/to/downloadFile");
62+
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
63+
try {
64+
// 返回一个异步结果 download, 可同步的调用 waitForCompletion 等待 download 结束, 成功返回 void , 失败抛出异常.
65+
Download download = transferManager.download(getObjectRequest, downloadFile);
66+
download.waitForCompletion();
67+
System.out.printf("RequestId : %s\n", download.getObjectMetadata().getRequestId());
68+
} catch (CosServiceException e) {
69+
e.printStackTrace();
70+
} catch (CosClientException e) {
71+
e.printStackTrace();
72+
} catch (InterruptedException e) {
73+
e.printStackTrace();
74+
}
75+
}
76+
77+
private static TransferManager createTransferManager() {
78+
// 初始化用户身份信息(secretId, secretKey)
79+
COSCredentials cred = new BasicCOSCredentials("AKIDXXXXXXXX","1A2Z3YYYYYYYYYY");
80+
// 2 设置 bucket 的地域, COS_REGION 请参见 https://www.qcloud.com/document/product/436/6224
81+
ClientConfig clientConfig = new ClientConfig(new Region("COS_REGION"));
82+
// 设置请求协议,推荐使用 https 协议
83+
clientConfig.setHttpProtocol(HttpProtocol.https);
84+
//若设置自定义源站域名时未上传 https 证书,则改为 clientConfig.setHttpProtocol(HttpProtocol.http);
85+
// 设置自定义的域名
86+
UserSpecifiedEndpointBuilder endpointBuilder = new UserSpecifiedEndpointBuilder("generalApiEndpoint", "getServiceApiEndpoint");
87+
clientConfig.setEndpointBuilder(endpointBuilder);
88+
// 3 生成 cos 客户端
89+
COSClient cosclient = new COSClient(cred, clientConfig);
90+
91+
ExecutorService threadPool = Executors.newFixedThreadPool(4);
92+
// 传入一个 threadpool, 若不传入线程池, 默认 TransferManager 中会生成一个单线程的线程池。
93+
TransferManager transferManager = new TransferManager(cosclient, threadPool);
94+
95+
return transferManager;
96+
}
97+
}

0 commit comments

Comments
 (0)