一、参考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需要的参数信息:

#参数说明
1endPoint请求地址,即URL中的协议+请求地址,公有云不填,私有云根据信息拼接如:https://qingstor.com
2akAK(Access Key ID):访问密钥ID
3skSK(Secret Access Key):与访问密钥ID结合使用的密钥
4zoneName你的bucket所在的zone,比如pek3a
5bucketNamebucket名称,如果没有创建先从控制台或者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();
        }
    }

四、验证查看

配置好参数后,执行测试脚本。

最后登录对象存储控制台查看文件资源:

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐