1、进入阿里云官网
2、搜索“对象存储OSS”
3、进入“管理控制台”
4、进入“Bucket列表”,点击“创建Bucket”
5、根据实际情况选择,最后点击“确定”
这里插入一个可以通过代码创建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();
}
}
6、点击“文件列表”,选择“上传文件”
7、选择“扫描文件”,顺便选择一张图片后,再点击“上传文件”
8、返回文件列表,点击“详情”
9、复制url,粘贴到浏览器上就可以下载此文件了
以上均为控制台操作文件,下面展示通过代码操作
10、选择“AccessKey管理”
11、点击“创建AccessKey”
12、创建成功后,把“AccessKey ID”和“AccessKey Secret”复制下来,后面要用
13、开始代码开发,引入依赖,如果是SpringBoot项目就不用加nacos依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
14、添加配置文件application.properties,SpringBoot项目就不用加nacos的配置了
# 服务端口
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
15、添加启动类,SpringBootApplication的
(exclude=DataSourceAutoConfiguration.class)
和EnableDiscoveryClient注解看情况加
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);
}
}
16、创建ConstantOssPropertiesUtils配置类
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;
}
}
17、编写controller,service,serviceImpl
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;
}
}
}
18、swagger上传文件测试
19、打开阿里云OSS文件列表查看
最后, 整合阿里云OSS对象存储服务成功!!!