java对接天翼云OOS实现文件存储

  • 1. 注册天翼云账户、开通对象存储、创建容器
  • 2. 获取AccessKeyID、SecretAccessKey
    • 确定四个参数,在application.yml中填入以下配置
  • 3. maven中央仓库中没有该jar包,官网下载java-oos-sdk-6.5.3.jar到本地,或者上传到maven私服下
  • 4. 下载后放入项目lib目录下,在pom.xml文件中添加相关依赖
  • 5. 添加配置类
  • 6. 实现工具类,这里直接写成Service服务类,方法一样,可进行适当修改

1. 注册天翼云账户、开通对象存储、创建容器

2. 获取AccessKeyID、SecretAccessKey

确定四个参数,在application.yml中填入以下配置

# 文件上传 OOS (天翼云)
oos:config:access-key: 填入之前获取的AccessKeyIDsecret-key: 填入对应密钥SecretAccessKeyendpoint: oos-hazz.ctyunapi.cn(可以直接填此端点,不需要动)bucket: 容器名称

3. maven中央仓库中没有该jar包,官网下载java-oos-sdk-6.5.3.jar到本地,或者上传到maven私服下

下载链接 java-oos-sdk

4. 下载后放入项目lib目录下,在pom.xml文件中添加相关依赖

     <!--天翼云OOS--><dependency><groupId>cn.ctyun</groupId><artifactId>ctyun-sdk-oss</artifactId><version>6.5.0</version><scope>system</scope><systemPath>${project.basedir}/lib/oos-java-sdk-6.5.3.jar</systemPath></dependency><dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version></dependency><dependency><groupId>org.sejda.imageio</groupId><artifactId>webp-imageio</artifactId><version>0.1.6</version></dependency><!-- https://mvnrepository.com/artifact/joda-time/joda-time --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId></dependency>

5. 添加配置类

@Data
@Component
public class OosClientConfig {@Value("${oos.config.access-key}")private String accessKey;@Value("${oos.config.secret-key}")private String secretKey;@Value("${oos.config.endpoint}")private String endpoint;@Value("${oos.config.bucket}")private String bucket;@Beanpublic AmazonS3 oosClient() {ClientConfiguration clientConfig = new ClientConfiguration();// 设置连接的超时时间,单位毫秒clientConfig.setConnectionTimeout(30 * 1000);// 设置 socket 超时时间,单位毫秒clientConfig.setSocketTimeout(30 * 1000);clientConfig.setProtocol(Protocol.HTTP); //设置 http// 设置 V4 签名算法中负载是否参与签名,关于签名部分请参看《OOS 开发者文档》S3ClientOptions options = new S3ClientOptions();options.setPayloadSigningEnabled(true);// 创建 clientAmazonS3 oosClient = new AmazonS3Client(new PropertiesCredentials(accessKey, secretKey), clientConfig);// 设置 endpointoosClient.setEndpoint(endpoint);//设置选项oosClient.setS3ClientOptions(options);return oosClient;}
}

6. 实现工具类,这里直接写成Service服务类,方法一样,可进行适当修改

@Log4j2
@Service
public class OosService {@Autowiredprivate OosClientConfig oosClientConfig;/*** @Desecription: 上传文件*/public String uploadFile(MultipartFile file, String fileName) {InputStream inputStream = null;String pathUrl = "";try {inputStream = file.getInputStream();AmazonS3 ossClient = oosClientConfig.oosClient();String remoteFilePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());String dir = remoteFilePath + "/"; // 用户上传文件时指定的前缀。// 创建上传Object的MetadataObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setCacheControl("no-cache");objectMetadata.setHeader("Pragma", "no-cache");String suffix = fileName.substring(fileName.lastIndexOf("."));String path = dir + IdWorker.getIdStr() + suffix;try {objectMetadata.setContentLength(inputStream.available());// 上传文件log.info("开始上传文件到oss");log.info("bucket: " + oosClientConfig.getBucket());log.info("path: " + path);log.info("inputStream: " + inputStream);log.info("objectMetadata: " + objectMetadata);ossClient.putObject(oosClientConfig.getBucket(), path, inputStream, objectMetadata);// URL url = ossClient.generatePresignedUrl(new GeneratePresignedUrlRequest(oosClientConfig.getBucket(), path));String url = generatePresignedUrl(path);pathUrl = url;} catch (Exception e) {log.error("上传文件到oos失败", e);} finally {if (ossClient != null) {((AmazonS3Client) ossClient).shutdown();}if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}return pathUrl;} catch (Exception e) {log.error(e.getMessage(), e);}return null;}/*** @Desecription: 删除文件*/public boolean deleteFile(String filePath, String fileName) {AmazonS3 ossClient = oosClientConfig.oosClient();String path = filePath + fileName;boolean exist = ossClient.doesBucketExist(oosClientConfig.getEndpoint());if (!exist) {log.error("从OSS存储删除的文件不存在,path={}", path);return false;} else {try {ossClient.deleteObject(oosClientConfig.getEndpoint(), path);} catch (Exception e) {log.error("从天翼云OSS删除文件出错,path={}", path, e);return false;} finally {if (ossClient != null) {try {((AmazonS3Client) ossClient).shutdown();} catch (AmazonClientException e) {e.printStackTrace();}}}return true;}}/*** @Desecription: 获取文件下载地址 ,并设置过期时间*/public String generatePresignedUrl(String fileKey) throws ParseException {GeneratePresignedUrlRequest request = newGeneratePresignedUrlRequest(oosClientConfig.getBucket(), fileKey);
/*        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date expireDate = sdf.parse("2031-01-01");request.setExpiration(expireDate);*/URL url = oosClientConfig.oosClient().generatePresignedUrl(request);return url.toString();}
}

java对接天翼云OOS实现文件存储相关推荐

  1. 基于天翼云OSS实现文件存储

    基于天翼云OOS实现文件存储 1.技术分析 2.实现详细步骤 3.实现代码 1.技术分析 因项目原因必须采用天翼云OOS,而天翼云OOS开发文档简直一团糟.本文将实现基于OOS文件上传功能,若有不足, ...

  2. .NET CORE 对接天翼云 OOS

    最近,因公司项目需要对接天翼云OOS,在百度多次折腾后,大部分的都是基于java.php 等其他语言,很少基于C#语言的相关资料,即使有也是基于.NET Framwork开发的SDK,内容几乎是千篇一 ...

  3. vue+天翼云OOS文件存储+上传进度条

    在使用天翼云文件存储时,发现官方文档里写的不太多.网上相关的资料也很少,关于上传进度条的更是几乎没有.跟官方的技术人员对接后,整理前端使用教程如下: 在public文件夹下放置天翼云OOS的js文件, ...

  4. YII2调用天翼云OOS 对象存储服务

    前言 本文仅适用于新接触对象存储服务开发的新人,对于非常熟悉对象开发的人来说会发现其实都一样,网上有很多阿里云Oss的开发教程,甚至有composer 的安装方法,非常方便,但是如果新人接触对象存储开 ...

  5. vue+element实现天翼云oos上传文件

    最近遇到了一个新的需求,需要把原先上传文件的方式改为利用天翼云oos对象存储上传.这个问题着实卡了我好几天时间,不过方法总比困难多,最后也是成功实现文件的上传.话不多说,接下来列举实现步骤.(实现过程 ...

  6. 天翼云应用之-对象存储挂载

    最近学习了使用如何使用天翼云对象存储挂载,通过FUSE实现对将对象存储挂载进用户的空间文件系统.      用户空间文件系统(Filesystem in Userspace,简称FUSE)是一个面向类 ...

  7. java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录

    java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录 1.准备工作 1.1 接口调用账户 1.2 下载 金蝶星空云 ...

  8. java对接阿里云短信服务详解(验证码,推广短信,通知短信)

    前言 小前提: - java:springboot框架,maven版本管理. - 阿里云:有账号,已经进行实名认证. java对接阿里云短信服务详解(验证码,推广短信,通知短信) 前言 1. 登录阿里 ...

  9. Java对接金蝶云星空

    Java对接金蝶云星空 一:下载官方SDK 二:编写测试代码 三:登录授权成功 一:下载官方SDK 并将第三方包拉到project并pom引入 二:编写测试代码 K3CloudApiClient cl ...

最新文章

  1. nova api 分析
  2. [JavaWeb-Bootstrap]CSS样式和JS插件
  3. Hashcat从入门到入土(二)
  4. mysql utf8 4位_mysql中utf8和utf8mb4区别
  5. 我从创建具有仅仅一年编码经验的视频游戏中学到了什么
  6. 永远不要去依赖别人_心理学:永远不要穿别人剩下的旧衣服,这三点原因读来让人愧疚...
  7. 字符串匹配之KMP算法
  8. linux c 调用c程序,Linux C调用C++库(用C封装C++接口)
  9. 自动化测试基础篇--Selenium等待时间
  10. siege linux 压力测试工具
  11. linux uvc协议_USB摄像头的UVC协议
  12. 视频教程-Go语言区块链开发入门视频教程-区块链
  13. 肌酸报告:17个肌酸使用常见问题解答
  14. 开发一个简单的Mac应用
  15. 程序员的焦虑!程序媛的捉急!测试的前景和钱景知多少?
  16. 一个遮罩层怎么遮罩两个图层_premiere遮罩功能在哪儿_怎么在视频中加遮罩图层_遮罩图层制作教程详解...
  17. 处理人际冲突(冲突的本质是什么?发生冲突最要不要采取哪四种行动?建设性处理冲突的技巧是什么?)...
  18. HDU 1425 sort
  19. linux系统下u盘变成只读模式如何修改
  20. 数据结构第1章绪论相关练习题

热门文章

  1. 阿里大鱼--短信发送API
  2. 女富豪吴亚军的财富平衡术 | 一点财经
  3. 基于JavaSwing开发MP3音乐播放器 课程设计 大作业源码 毕业设计
  4. 面试官:领导让你开车送醉酒客户回家,你送吗?95后:傻子才送
  5. s905各种型号的区别_GCS、GCK、MNS、GGD开关柜的区别
  6. HydraJohn的简单使用
  7. 群雄争锋:大同光伏领跑者项目全解析
  8. form标签的action怎么用
  9. AS drawable
  10. 谷歌浏览器被搜狗网址导航劫持解决办法