Skip to content

Commit 5a7d568

Browse files
committed
CRCSample.java
1 parent b09f438 commit 5a7d568

File tree

1 file changed

+65
-46
lines changed

1 file changed

+65
-46
lines changed

src/samples/CRCSample.java

Lines changed: 65 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,96 @@
11
package samples;
22

3-
import java.io.File;
3+
import java.io.ByteArrayInputStream;
44
import java.io.IOException;
5+
import java.io.InputStream;
56

67
import com.aliyun.oss.ClientException;
8+
import com.aliyun.oss.InconsistentException;
79
import com.aliyun.oss.OSSClient;
810
import com.aliyun.oss.OSSException;
9-
import com.aliyun.oss.model.GetObjectRequest;
11+
import com.aliyun.oss.common.utils.IOUtils;
12+
import com.aliyun.oss.internal.OSSUtils;
13+
import com.aliyun.oss.model.AppendObjectRequest;
14+
import com.aliyun.oss.model.AppendObjectResult;
15+
import com.aliyun.oss.model.OSSObject;
16+
import com.aliyun.oss.model.UploadFileRequest;
17+
import junit.framework.Assert;
1018

1119
/**
12-
* 断点续传下载用法示例
20+
* 上传/下载数据校验用法示例
1321
*
1422
*/
15-
public class ImageSample {
23+
public class CRCSample {
1624

1725
private static String endpoint = "<endpoint, http://oss-cn-hangzhou.aliyuncs.com>";
1826
private static String accessKeyId = "<accessKeyId>";
1927
private static String accessKeySecret = "<accessKeySecret>";
2028
private static String bucketName = "<bucketName>";
21-
private static String key = "example.jpg";
22-
29+
private static String uploadFile = "<uploadFile>";
30+
private static String key = "crc-sample.txt";
31+
2332

24-
public static void main(String[] args) throws IOException {
33+
public static void main(String[] args) throws IOException {
34+
35+
String content = "Hello OSS, Hi OSS, OSS OK.";
2536

37+
// 上传/下载默认开启CRC校验,如果不需要,请关闭CRC校验功能
38+
// ClientConfiguration config = new ClientConfiguration();
39+
// config.setCrcCheckEnabled(false);
40+
// OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
2641
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
2742

2843
try {
29-
// 缩放
30-
String style = "image/resize,m_fixed,w_100,h_100";
31-
GetObjectRequest request = new GetObjectRequest(bucketName, key);
32-
request.setProcess(style);
33-
34-
ossClient.getObject(request, new File("example-resize.jpg"));
35-
36-
// 裁剪
37-
style = "image/crop,w_100,h_100,x_100,y_100,r_1";
38-
request = new GetObjectRequest(bucketName, key);
39-
request.setProcess(style);
40-
41-
ossClient.getObject(request, new File("example-crop.jpg"));
42-
43-
// 旋转
44-
style = "image/rotate,90";
45-
request = new GetObjectRequest(bucketName, key);
46-
request.setProcess(style);
44+
45+
// 开启CRC校验后,上传(putObject/uploadPart/uploadFile)自动开启CRC校验,使用方法与原来相同。
46+
// appendObject需要出AppendObjectRequest.setInitCRC才会CRC校验
47+
ossClient.putObject(bucketName, key, new ByteArrayInputStream(content.getBytes()));
48+
ossClient.deleteObject(bucketName, key);
4749

48-
ossClient.getObject(request, new File("example-rotate.jpg"));
50+
// 追加上传,第一次追加
51+
AppendObjectRequest appendObjectRequest = new AppendObjectRequest(bucketName, key,
52+
new ByteArrayInputStream(content.getBytes())).withPosition(0L);
4953

50-
// 锐化
51-
style = "image/sharpen,100";
52-
request = new GetObjectRequest(bucketName, key);
53-
request.setProcess(style);
54+
appendObjectRequest.setInitCRC(0L);
55+
AppendObjectResult appendObjectResult = ossClient.appendObject(appendObjectRequest);
5456

55-
ossClient.getObject(request, new File("example-sharpen.jpg"));
57+
// 追加上传,第二次追加
58+
appendObjectRequest = new AppendObjectRequest(bucketName, key,
59+
new ByteArrayInputStream(content.getBytes()));
60+
appendObjectRequest.setPosition(appendObjectResult.getNextPosition());
61+
appendObjectRequest.setInitCRC(appendObjectResult.getClientCRC());
62+
appendObjectResult = ossClient.appendObject(appendObjectRequest);
5663

57-
// 水印
58-
style = "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ";
59-
request = new GetObjectRequest(bucketName, key);
60-
request.setProcess(style);
64+
ossClient.deleteObject(bucketName, key);
6165

62-
ossClient.getObject(request, new File("example-watermark.jpg"));
66+
// 断点续传上传,支持CRC校验
67+
UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName, key);
68+
// 待上传的本地文件
69+
uploadFileRequest.setUploadFile(uploadFile);
70+
// 设置并发下载数,默认1
71+
uploadFileRequest.setTaskNum(5);
72+
// 设置分片大小,默认100KB
73+
uploadFileRequest.setPartSize(1024 * 1024 * 1);
74+
// 开启断点续传,默认关闭
75+
uploadFileRequest.setEnableCheckpoint(true);
6376

64-
// 格式转换
65-
style = "image/format,png";
66-
request = new GetObjectRequest(bucketName, key);
67-
request.setProcess(style);
77+
ossClient.uploadFile(uploadFileRequest);
6878

69-
ossClient.getObject(request, new File("example-format.png"));
79+
// 下载CRC校验,注意范围下载不支持CRC校验,downloadFile不支持CRC校验
80+
OSSObject ossObject = ossClient.getObject(bucketName, key);
81+
Assert.assertNull(ossObject.getClientCRC());
82+
Assert.assertNotNull(ossObject.getServerCRC());
7083

71-
// 图片信息
72-
style = "image/info";
73-
request = new GetObjectRequest(bucketName, key);
74-
request.setProcess(style);
84+
InputStream stream = ossObject.getObjectContent();
85+
while (stream.read() != -1) {
86+
}
87+
stream.close();
7588

76-
ossClient.getObject(request, new File("example-info.txt"));
89+
// 校验CRC是否一致
90+
OSSUtils.checkChecksum(IOUtils.getCRCValue(stream), ossObject.getServerCRC(), ossObject.getRequestId());
7791

92+
ossClient.deleteObject(bucketName, key);
93+
7894
} catch (OSSException oe) {
7995
System.out.println("Caught an OSSException, which means your request made it to OSS, "
8096
+ "but was rejected with an error response for some reason.");
@@ -87,6 +103,9 @@ public static void main(String[] args) throws IOException {
87103
+ "a serious internal problem while trying to communicate with OSS, "
88104
+ "such as not being able to access the network.");
89105
System.out.println("Error Message: " + ce.getMessage());
106+
} catch (InconsistentException ie) {
107+
System.out.println("Caught an OSSException");
108+
System.out.println("Request ID: " + ie.getRequestId());
90109
} catch (Throwable e) {
91110
e.printStackTrace();
92111
} finally {

0 commit comments

Comments
 (0)