天翼云oss 相关接口的java 实现

写在前面。不得不说,有关天翼云oss的相关资料真的是少得可怜,官网甚至连go版本的SDK 都没有!!!可能是用的人太少了吧。毕竟前有阿里云oss,后又华为云oss,还有其他各种各样的云,天翼云竞争力不强,资料就少。

首先是使用maven导入相关jar包。再次吐槽,天翼云连个maven中央仓库都没得!!!可想而知是多么小众。我是自己在官网把jar包下下来,网址在这里https://www.ctyun.cn/help2/10000101/10001740 选择Java版本,如下图
在这里插入图片描述
将下下来的文件解压,然后丢到公司的中央仓库(如何将jar包发布到远程仓库有很多教程,不多赘述)。

 <dependency>
        <groupId>cn.ctyun</groupId>
        <artifactId>ctyun-sdk-oss</artifactId>
        <version>6.5.0</version>
 </dependency>

导入相关jar包后接下来是代码部分。
首先是获取客户端,获取客户端有很多方法,在截图里面的开发者指南里有很多详细介绍,在此只列举一种方法。如下:

import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
 public AmazonS3 getClient() {
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setConnectionTimeout(30 * 1000);     //设置连接的超时时间,单位毫秒
        clientConfig.setSocketTimeout(30 * 1000);        //设置socket超时时间,单位毫秒
        clientConfig.setProtocol(Protocol.HTTP);        //设置http

        //负载是否参与签名、设置为参与
        S3ClientOptions options = new S3ClientOptions();
        options.setPayloadSigningEnabled(true);

        //创建client对象
        AmazonS3 ossClient = new AmazonS3Client(
            new PropertiesCredentials(params.getAccesskeyid(), params.getAccesskeysecret()), clientConfig);

        // 设置endpoint
        ossClient.setEndpoint(params.getEndpoint());

        //设置选项
        ossClient.setS3ClientOptions(options);
        return ossClient;
    }

其中创建客户端需要params.getAccesskeyid(), params.getAccesskeysecret(),params.getEndpoint()这三个参数。这三个参数分别代表天翼云客户端的accesskeyid、accesskeysecret和endpoint,相关术语可以参考开发者文档去理解。

接下来是上传文件,如下:

import java.io.InputStream;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.ObjectMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import com.amazonaws.AmazonClientException;
 public String uploadFile(InputStream fileContent, String remotePath, String fileName) {
        AmazonS3 ossClient = getClient();
        // 定义二级目录
        String remoteFilePath = remotePath.substring(0, remotePath.length()).replaceAll("\\\\", "/") + "/";
        // 创建上传Object的Metadata
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setCacheControl("no-cache");
        objectMetadata.setHeader("Pragma", "no-cache");
        String path = remoteFilePath + fileName;
        try {
            objectMetadata.setContentLength(fileContent.available());
            // 上传文件
            logger.info("开始上传文件到oss");
            ossClient.putObject(params.getBucket(), path, fileContent, objectMetadata);
        } catch (Exception e) {
            logger.error("上传文件到oss失败");
        } finally {
            if (ossClient != null) {
                ((AmazonS3Client) ossClient).shutdown();
            }
            if (fileContent != null) {
                try {
                    fileContent.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return path;
    }

上传文件出了需要创建客户端的三个参数外,还需要bucketName参数,即params.getBucket() ,也就是天翼云oss的桶(桶的概念可以参考开发者文档),删除文件下同。

删除文件,如下:

 public boolean deleteFile(String filePath, String fileName) {
        AmazonS3 ossClient = getClient();
        String path = filePath + fileName;
        boolean exist = ossClient.doesBucketExist(params.getBucket());
        if (!exist) {
            logger.error("从OSS存储删除的文件不存在,path={}", path);
            return false;
        } else {
            try {
                ossClient.deleteObject(params.getBucket(), path);
            } catch (Exception e) {
                logger.error("从天翼云OSS删除文件出错,path={}", path, e);
                return false;
            } finally {
                if (ossClient != null) {
                    try {
                        ((AmazonS3Client) ossClient).shutdown();
                    } catch (AmazonClientException e) {
                        e.printStackTrace();
                    }
                }
            }
            return true;
        }

天翼云用的人的确是不多,很多实现还是需要参考开发者文档。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值