这里插入一个可以通过代码创建Bucket的测试类,如下:
- import com.aliyun.oss.OSS;
- import com.aliyun.oss.OSSClientBuilder;
-
- public class OssTest {
- public static void main(String[] args) {
- String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
- String accessKeyId = "LTAI5tRo9YESJJp2EjPscF1h";
- String accessKeySecret = "UhClPCgctvM0gZdcppsCc0vTMOVuKm";
- String bucketName = "sgg-yygh-syt-test";
-
- //创建OSSClient实例
- OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
-
- //创建存储空间
- ossClient.createBucket(bucketName);
-
- //关闭OSSClient
- ossClient.shutdown();
-
- }
- }
以上均为控制台操作文件,下面展示通过代码操作
-
com.aliyun.oss -
aliyun-sdk-oss -
3.15.1 -
joda-time -
joda-time -
2.10.1 -
-
com.alibaba.cloud -
spring-cloud-starter-alibaba-nacos-discovery -
2.2.0.RELEASE
- # 服务端口
- server.port=8205
- # 服务名
- spring.application.name=service-oss
-
- #返回json的全局时间格式.
- spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
- spring.jackson.time-zone=GMT+8
-
- # nacos服务地址
- spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
-
- aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com
- aliyun.oss.accessKeyId=LTAI5tRo9YESJJp2EjPscF1h
- aliyun.oss.secret=UhClPCgctvM0gZdcppsCc0vTMOVuKm
- aliyun.oss.bucket=sgg-yygh-syt
aliyun.oss.accessKeyId=LTAI5tRo9YESJJp2EjPscF1h
aliyun.oss.secret=UhClPCgctvM0gZdcppsCc0vTMOVuKm
aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com
aliyun.oss.bucket=sgg-yygh-syt
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
- import org.springframework.context.annotation.ComponentScan;
-
- @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
- @EnableDiscoveryClient//开启nacos注册中心
- @ComponentScan(basePackages = {"com.hospital"})//可以扫描到另一个模块的swagger
- public class ServiceOssApplication {
- public static void main(String[] args) {
- SpringApplication.run(ServiceOssApplication.class, args);
- }
- }
- import org.springframework.beans.factory.InitializingBean;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
-
- @Component
- public class ConstantOssPropertiesUtils implements InitializingBean {
-
- @Value("${aliyun.oss.endpoint}")
- private String endpoint;
-
- @Value("${aliyun.oss.accessKeyId}")
- private String accessKeyId;
-
- @Value("${aliyun.oss.secret}")
- private String secret;
-
- @Value("${aliyun.oss.bucket}")
- private String bucket;
-
- public static String EDNPOINT;
- public static String ACCESS_KEY_ID;
- public static String SECRECT;
- public static String BUCKET;
-
- @Override
- public void afterPropertiesSet() throws Exception {
- EDNPOINT=endpoint;
- ACCESS_KEY_ID=accessKeyId;
- SECRECT=secret;
- BUCKET=bucket;
- }
- }
controller层:
- import com.hospital.common.result.Result;
- import com.hospital.oss.service.FileService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
-
- @RestController
- @RequestMapping("/api/oss/file")
- public class FileApiController {
- @Autowired
- private FileService fileService;
-
- @PostMapping("/fileUpload")
- public Result fileUpload(MultipartFile file){
- //获取上传文件
- String url = fileService.uploadFile(file);
- return Result.ok(url);
- }
- }
service层:
- import org.springframework.web.multipart.MultipartFile;
-
- public interface FileService {
- //上传文件到阿里云oss
- String uploadFile(MultipartFile file);
- }
serviceImpl层:
- import com.aliyun.oss.OSS;
- import com.aliyun.oss.OSSClientBuilder;
- import com.hospital.oss.service.FileService;
- import com.hospital.oss.utils.ConstantOssPropertiesUtils;
- import org.joda.time.DateTime;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.UUID;
-
- @Service
- public class FileServiceImpl implements FileService {
-
- @Override
- public String uploadFile(MultipartFile file) {
- //获取ConstantOssPropertiesUtils中的属性
- String endpoint = ConstantOssPropertiesUtils.EDNPOINT;
- String accessKeyId = ConstantOssPropertiesUtils.ACCESS_KEY_ID;
- String accessKeySecret = ConstantOssPropertiesUtils.SECRECT;
- String bucketName = ConstantOssPropertiesUtils.BUCKET;
- try {
- //创建OSSClient实例
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- //上传文件流
- InputStream inputStream = file.getInputStream();
- String fileName = file.getOriginalFilename();
- //生成随机唯一值,使用uuid,添加到文件名称里面
- String uuid = UUID.randomUUID().toString().replaceAll("-","");
- fileName = uuid+fileName;
- //按照当前日期,创建文件夹,上传到创建文件夹里面
- //2021/02/02/01.jpg
- String timeUrl = new DateTime().toString("yyyy/MM/dd");
- fileName = timeUrl+"/"+fileName;
- //调用方法实现上传
- ossClient.putObject(bucketName, fileName, inputStream);
- //关闭OSSClient。
- ossClient.shutdown();
- //上传之后文件路径
- //https://yygh-atguigu.oss-cn-beijing.aliyuncs.com/01.jpg
- String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
- //返回
- return url;
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- }
- }
最后, 整合阿里云OSS对象存储服务成功!!!