1.前往阿里云官网,开通OSS服务
2.进入OSS管理控制台/概览
3.在右侧菜单栏,找到 创建 Bucket选项
4.Bucket名称(重要),这个是关联到后面配置文件的BucketName
5.地域名称(重要)就是上传文件处理的服务器。这个关联到后面的EndPoint
6.读写权限选择公共读,其他选择默认即可,点击确定完成创建
7.创建完成后即可在对象存储/Bucket列表发现,刚刚创建的Bucket
8.创建完成后,在右上角头像栏找到AccessKey管理
9.点击 创建AccessKey,身份验证后,即可获取到KeyId和KeySercret(重要)
10.都到这步了,准备工作算是做完了。
11.引入aliyun-oss 的Maven依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
12.在SpringBoot配置类application.properties文件中,添加oss配置信息(示例)
注意事项:1.等号右侧不能存在空格!!! 2.每个赋值的末尾不能有空格
aliyun.oss.file.bucketname=first-reser
spring.oss.file.endpoint=oss-cn-hangzhou.aliyuncs.com
spring.oss.file.keyid=LTAI5tPEh3AFP9VLdffjlsfj
spring.oss.file.keysecret=BHueXyrTCpIOyZhadajd
13.新建一类工具类(ConstantPropertiesUtils),获取上述配置中的值
//当项目自己启动的时候 ,spring接口 ,spring加载之后,执行接口的一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean{
//读取配置文件内容
@Value("${spring.oss.file.endpoint}")
private String endpoint;
@Value("${spring.oss.file.keyid}")
private String keyId;
@Value("${spring.oss.file.keysecret}")
private String keySercret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketName;
//定义公开的静态常量
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
//每当加载完配置文件 对公开的静态变量进行赋值
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = keyId;
ACCESS_KEY_SECRET = keySercret;
BUCKET_NAME = bucketName;
}
}
14.编写上传文件的接口
@RestController
@RequestMapping("/oss/fileUpload")
public class OssFileUploadController {
@Autowired
private OssService ossService;
@PostMapping
public Result uploadOssFile(MultipartFile file){
//返回上传到oss 的路径 实现回显
String url = ossService.uploadToOss(file);
return Result.success("上传成功",url);
}
}
15.编写上传文件的业务类(返回文件的访问路径)
public String uploadToOss(MultipartFile file) {
String endpoint = ConstantPropertiesUtils.END_POINT;
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySercret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
try {
//创建oss实例 这里注意引入oss 的版本 我这里使用的是3.10.2
OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySercret);
//这里需要一个文件的输入流
InputStream inputStream = file.getInputStream();
//获取文件原始名称
String fileName = file.getOriginalFilename();
//在文件名称种 添加随机唯一的值
String uuid = UUID.randomUUID().toString();
fileName = uuid + fileName;
//添加文件的日期路径 例如 2019/3/3/ew553301.jpg
Date date =new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
String datePath = dateFormat.format(date);
fileName = datePath + "/" + fileName;
//调用oss方法实现 上传
//第一个参数 bucketName
//第二个参数 上传的文件路径和名称
//第三个 上传文件的输入流
ossClient.putObject(bucketName,fileName,inputStream);
//关闭ossClient
ossClient.shutdown();
//把上传的文件 路径 返回
String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
return url;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
16.前端请求文件上传接口
<el-upload
action="http://localhost:8888/oss/fileUpload"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:on-change="onChange"
> </el-upload>
17.测试,上传文件后即可在 Bucket列表文件管理 中看到根据日期分类好的图片文件(完成)