一、参考API
官网SDK文档参考:Java SDK - 公有云文档中心 (qingcloud.com)
二、环境说明
公有云跟私有云区别:
使用公有云QingStor,直接按照官网sdk直接可对接,私有云QingStor的话,需要设置具体的私有云请求地址及zoneName,具体如何识别,如下:
- 先登录对象存储控制台创建bucketName
- 创建完成后看到bucketName列表的URL字段
https://testbk.pek3b.qingstor.com
解释说明:
https 协议
testbk bucketName
pek3b zoneName
qingstor.com 请求地址
三、具体使用
连接QingStor需要的参数信息:
# | 参数 | 说明 |
1 | endPoint | 请求地址,即URL中的协议+请求地址,公有云不填,私有云根据信息拼接如:https://qingstor.com |
2 | ak | AK(Access Key ID):访问密钥ID |
3 | sk | SK(Secret Access Key):与访问密钥ID结合使用的密钥 |
4 | zoneName | 你的bucket所在的zone,比如pek3a |
5 | bucketName | bucket名称,如果没有创建先从控制台或者api创建bucket |
代码示例
引入依赖
<dependency>
<groupId>com.yunify</groupId>
<artifactId>qingstor.sdk.java</artifactId>
<version>2.5.1</version>
</dependency>
String endPoint ="";//私有云需设置
public String ak="";//AK(Access Key ID):访问密钥ID
public String sk="";//SK(Secret Access Key):与访问密钥ID结合使用的密钥
public String zoneName="pek3b";//你的bucket所在的zone,比如pek3a
public String bucketName ="testbk";//bucket名称,如果没有创建先从控制台或者api创建bucket
public void testQingStor() {
try {
EnvContext env = new EnvContext(ak, sk);
//私有云设置
if (StringUtils.isNotBlank(endPoint)) {
env.setEndpoint(endPoint);
}
// 获取QingStor对象
QingStor qingstor = new QingStor(env);
// 获取Bucket对象
Bucket bucket = qingstor.getBucket(bucketName, zoneName);
//【1】获取账户下的 Bucket 列表
QingStor.ListBucketsOutput listBucketsOutput = qingstor.listBuckets(null);
System.out.println("获取账户下的 Bucket 列表 ");
ObjectMapper mapper = new ObjectMapper();
String jsons = mapper.writeValueAsString(listBucketsOutput);
System.out.println("获取账户下的 Bucket 列表 " + jsons);
//【2】上传文件测试
File f = new File("C:\\12.jpg");
Bucket.PutObjectInput input = new Bucket.PutObjectInput();
// input 可以设置 File, Stream 等作为要上传的内容.
input.setBodyInputFile(f);
// 可选设置.
// input.setContentType();
input.setContentLength(f.length());
Bucket.PutObjectOutput putObjectOutput = bucket.putObject(f.getName(), input);
//【3】获取所有文件清单
Bucket.ListObjectsOutput listObjectsOutput = bucket.listObjects(null);
//【4】获取文件 转存至本地
String key="12.jpg";
Bucket.GetObjectInput headObjectInput = new Bucket.GetObjectInput();
Bucket.GetObjectOutput output = bucket.getObject(key, headObjectInput);
try {
InputStream inputStream = output.getBodyInputStream();
File tmp = File.createTempFile("lzq", ".jpg", new File("C:\\"));
OutputStream os = new FileOutputStream(tmp);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
inputStream.close();
if (output.getStatueCode() != 200) {
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(1);
} catch (QSException e) {
e.printStackTrace();
}
}
四、验证查看
配置好参数后,执行测试脚本。
最后登录对象存储控制台查看文件资源: