KS3Client.java
3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package com.bjivt.ksyun;
import java.io.ByteArrayInputStream;
import java.io.File;
import com.bjivt.util.PropertiesUtil;
import com.ksyun.ks3.dto.CannedAccessControlList;
import com.ksyun.ks3.dto.ObjectMetadata;
import com.ksyun.ks3.exception.serviceside.NotFoundException;
import com.ksyun.ks3.service.Ks3;
import com.ksyun.ks3.service.Ks3Client;
import com.ksyun.ks3.service.request.CreateBucketRequest;
import com.ksyun.ks3.service.request.HeadObjectRequest;
import com.ksyun.ks3.service.request.PutObjectRequest;
public class KS3Client {
private Ks3 client = null;
private String bucketName = PropertiesUtil.config.get("Ks3.bucket");
private String endpoint = PropertiesUtil.config.get("Ks3.endpoint");
public KS3Client() {
client = new Ks3Client(PropertiesUtil.config.get("Ks3.key"), PropertiesUtil.config.get("Ks3.secret"));
}
public KS3Client(String key, String secret) {
client = new Ks3Client(key, secret);
}
/**
* 使用最简单的方式创建一个bucket
*/
public void createBucket(String bucket) {
CreateBucketRequest request = new CreateBucketRequest(bucket);
//配置bucket的访问权限
request.setCannedAcl(CannedAccessControlList.PublicRead);
//执行操作
client.createBucket(request);
}
/**
* 删除一个bucket
* @param bucket
*/
public void deleteBucket(String bucket) {
client.deleteBucket(bucket);
}
/**
* 上传文件
* @param file 文件
* @param key 目标路径
* @param isPublic 是否公开
* @return 访问URL
*/
public String putObject(File file, String key, boolean isPublic) {
String accessUrl = null;
//System.out.println("--------------------key:"+key);
//System.out.println("--------------------file:"+file.getPath());
PutObjectRequest request = new PutObjectRequest(this.bucketName, key, file);
if (isPublic == true) {
//上传一个公开文件
request.setCannedAcl(CannedAccessControlList.PublicRead);
accessUrl = String.format("http://%s/%s/%s", this.endpoint, this.bucketName, key);
} else {
accessUrl = String.format("http://%s.%s/%s", this.bucketName, this.endpoint, key);
}
client.putObject(request);
return accessUrl;
}
/**
*将一个输入流中的内容上传至<bucket名称>这个存储空间下,并命名为<object key>
*/
public void putObjectAsStream(String key, String content){
ObjectMetadata meta = new ObjectMetadata();
PutObjectRequest request = new PutObjectRequest(bucketName,
key, new ByteArrayInputStream(content.getBytes()),
meta);
// 可以指定内容的长度,否则程序会把整个输入流缓存起来,可能导致jvm内存溢出
meta.setContentLength(content.length());
client.putObject(request);
}
/**
* 判断一个object是否存在
*/
public boolean objectExists(String objectName) {
try {
HeadObjectRequest request = new HeadObjectRequest(this.bucketName, objectName);
client.headObject(request);
return true;
} catch (NotFoundException e) {
return false;
}
}
/**
* 将<bucket名称>这个存储空间下的<object key>删除
*/
public void deleteObject(String objectName) {
client.deleteObject(this.bucketName, objectName);
}
public static void main(String[] args) {
KS3Client ks3 = new KS3Client("fWUN8KDtJZJGo0ArQ4qo", "UIWPYVeaV8kq2vWImDkLBvWs/pwmTJVF9MCNHDsC");
File file = new File("/Users/yumeiyan/Downloads/banner1.png");
System.out.println(ks3.putObject(file, "avatar/banner1.png", true));
}
}