前言阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务 。其数据设计持久性不低于 99.9999999999%(12 个 9),服务设计可用性(或业务连续性)不低于 99.995% 。
OSS 具有与平台无关的 RESTful API 接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据 。
您可以使用阿里云提供的 API、SDK 接口或者 OSS 迁移工具轻松地将海量数据移入或移出阿里云 OSS 。数据存储到阿里云 OSS 以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)和归档存储(Archive)作为不经常访问数据的存储方式 。
登录阿里云,进入到控制台
文章插图
【SpringBoot OSS 整合全过程】点击确定,就建好了 。
- 接下来就开始附代码
新建一个springboot项目
导入依赖 pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.Apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>SpringOOS</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><version>2.3.0.RELEASE</version></dependency><!-- OSS SDK 相关依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.4.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.4</version><scope>provided</scope></dependency><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.9.9</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version></dependency></dependencies></project>
Application.yml## aliyun oss## 配置说明参考: com.ljq.demo.springboot.common.config.OSSConfig.classoss:endpoint: oss-cn-shenzhen.aliyuncs.comurl: https://oos-all.oss-cn-shenzhen.aliyuncs.com/accessKeyId: #这里在个人中心里accesskeys查看accessKeySecret: #这里在个人中心里accesskeys查看bucketName: #这里写OSS里自己创建的OSS文件夹
文章插图
文章插图
写一个config配置类
package com.sykj.config;import lombok.Data;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;import JAVA.io.Serializable;/** * @Description: 阿里云 OSS 配置信息 * @Author: jiangpengcheng * @Date: 2020/07/15 */@Data@Configurationpublic class OSSConfig implements Serializable {private static final long serialVersionUID = -119396871324982279L;/*** 阿里云 oss 站点*/@Value("${oss.endpoint}")private String endpoint;/*** 阿里云 oss 资源访问 url*/@Value("${oss.url}")private String url;/*** 阿里云 oss 公钥*/@Value("${oss.accessKeyId}")private String accessKeyId;/*** 阿里云 oss 私钥*/@Value("${oss.accessKeySecret}")private String accessKeySecret;/*** 阿里云 oss 文件根目录*/@Value("${oss.bucketName}")private String bucketName;}
工具类package com.sykj.util;import com.aliyun.oss.ClientConfiguration;import com.aliyun.oss.OSSClient;import com.aliyun.oss.common.auth.DefaultCredentialProvider;import com.aliyun.oss.model.ObjectMetadata;import com.sykj.config.OSSConfig;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;import java.util.UUID;/** * @Description: 阿里云 oss 上传工具类(高依赖版) * @Author: @author jiangpengcheng * @Date: 2020/7/15 */public class OSSBootUtil {private OSSBootUtil(){}/*** oss 工具客户端*/private volatile static OSSClient ossClient = null;/*** 上传文件至阿里云 OSS* 文件上传成功,返回文件完整访问路径* 文件上传失败,返回 null* @author jiangpengcheng* @param ossConfig oss 配置信息* @param file 待上传文件* @param fileDir 文件保存目录* @return oss 中的相对文件路径*/public static String upload(OSSConfig ossConfig, MultipartFile file, String fileDir){initOSS(ossConfig);StringBuilder fileUrl = new StringBuilder();try {String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf('.'));String fileName = System.currentTimeMillis() + "-" + UUID.randomUUID().toString().substring(0,18) + suffix;if (!fileDir.endsWith("/")) {fileDir = fileDir.concat("/");}fileUrl = fileUrl.append(fileDir + fileName);System.out.println(fileUrl+"-----------------");ObjectMetadata objectMetadata = https://www.isolves.com/it/cxkf/kj/2020-08-21/new ObjectMetadata();objectMetadata.setContentType("image/jpg");ossClient.putObject(ossConfig.getBucketName(), fileUrl.toString(), file.getInputStream(),objectMetadata);} catch (IOException e) {e.printStackTrace();return null;}fileUrl = fileUrl.insert(0,ossConfig.getUrl());return fileUrl.toString();}/*** 初始化 oss 客户端* @param ossConfig* @return*/private static OSSClient initOSS(OSSConfig ossConfig) {if (ossClient == null ) {synchronized (OSSBootUtil.class) {if (ossClient == null) {ossClient = new OSSClient(ossConfig.getEndpoint(),new DefaultCredentialProvider(ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret()),new ClientConfiguration());}}}return ossClient;}/*** 根据前台传过来的文件地址 删除文件* @author jiangpengcheng* @param objectName* @param ossConfig* @return*/public static ResponseResult delete(String objectName,OSSConfig ossConfig) {initOSS(ossConfig);//将完整路径替换成 文件地址 因为yml里的url有了地址链接https: //oos-all.oss-cn-shenzhen.aliyuncs.com/// 如果再加上地址 那么又拼接了 所以删除不了 要先把地址替换为 jpc/2020-07-16/1594857669731-51d057b0-9778-4aed.pngString fileName = objectName.replace("https://oos-all.oss-cn-shenzhen.aliyuncs.com/", "");System.out.println(fileName+"******************************");// 根据BucketName,objectName删除文件ossClient.deleteObject(ossConfig.getBucketName(), fileName);return ResponseResult.ok("删除成功",fileName);}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpringBoot整合JPA案例
- SpringBoot中使用dubbo实现RPC调用
- SpringBoot使用OpenCV总结
- 在 SpringBoot 中实现多数据源访问的最佳实践
- 附英文 两分钟浅述JBOSS Netty
- SpringBoot教程-HelloWorld
- 十年架构师吐血整合Java开发必备宝典,凭借这份宝典定级腾讯T3-4
- 化佛茶生态环境,安徽池州推进茶叶品牌整合
- SpringBoot常用属性配置
- 基于springboot+shiro+freemarker的快速开发框架,代码免费分享