/**
-
服务器启动的时候,ConstantPropertiesUtil初始化,调用里面的afterPropertiesSet方法,读取配置文件的内容
-
@throws Exception
*/
@Override
public void afterPropertiesSet() throws Exception {
ENDPOINT = endPoint;
KEYID = keyId;
KEYSECRET = keySecret;
BUCKETNAME = bucketName;
}
}
4、实现文件上传
定义具体的数据返回格式
@Data
public class R {
private Boolean success; // 响应是否成功
private Integer code; // 状态码
private String message; // 返回信息
private Map<String, Object> data = new HashMap<>(); // 返回数据,放在键值对中
private R() {
}
/**
-
操作成功,调用这个方法
-
@return 返回成功的数据
*/
public static R ok() {
R r = new R();
r.setSuccess(true);
r.setCode(ResultCode.SUCCESS);
r.setMessage(“操作成功”);
return r;
}
/**
-
操作失败,调用这个方法
-
@return 返回失败的数据
*/
public static R error() {
R r = new R();
r.setSuccess(false);
r.setCode(ResultCode.ERROR);
r.setMessage(“操作失败”);
return r;
}
// 使用链式编程
public R success(Boolean success) {
this.setSuccess(success);
return this;
}
public R message(String message) {
this.setMessage(message);
return this;
}
public R code(Integer code) {
this.setCode(code);
return this;
}
public R data(String key, Object value) {
this.data.put(key, value);
return this;
}
public R data(Map<String, Object> map) {
this.setData(map);
return this;
}
}
上传文件的Controller
@RestController
@RequestMapping(“/user/oss”)
@CrossOrigin // 解决跨域
public class FileUploadController {
/**
-
上传文件
-
@return
*/
@PostMapping(“upload”)
public R uploadTeacherImg(@RequestParam(“file”) MultipartFile file) {
// 地域节点
String endpoint = ConstantPropertiesUtil.ENDPOINT;
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = ConstantPropertiesUtil.KEYID;
String accessKeySecret = ConstantPropertiesUtil.KEYSECRET;
// BucketName
String yourBucketName = ConstantPropertiesUtil.BUCKETNAME;
try {
// 1.获取上传文件 MultipartFile file
// @RequestParam(“file”) file 与表单输入项的name值保持一致
// 2.获取上传文件名称,获取上传文件输入流
String fileName = file.getOriginalFilename();
// 在文件名称之前添加uuid值,保证文件名称不重复
String uuid = UUID.randomUUID().toString();
fileName = uuid + fileName;
// 获取当前日期 2020/01/03
String filePath = new DateTime().toString(“yyyy/MM/dd”);
// 拼接文件完整路径 2020/01/03/parker.jpg
fileName = filePath + “/” + fileName;
// 获取上传文件输入流
InputStream in = file.getInputStream();
// 3.把上传文件存储到阿里云oss里面
// 创建OSSClient实例。
OSS ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 上传文件流
// 第一个参数时BucketName,第二个参数是文件名称,第三个参数是输入流
最后
既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?
就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。
如果觉得图片不够清晰,也可来找小编分享原件的xmind文档!
且除此份微服务体系大纲外,我也有整理与其每个专题核心知识点对应的最强学习笔记:
-
出神入化——SpringCloudAlibaba.pdf
-
SpringCloud微服务架构笔记(一).pdf
-
SpringCloud微服务架构笔记(二).pdf
-
SpringCloud微服务架构笔记(三).pdf
-
SpringCloud微服务架构笔记(四).pdf
-
Dubbo框架RPC实现原理.pdf
-
Dubbo最新全面深度解读.pdf
-
Spring Boot学习教程.pdf
-
SpringBoo核心宝典.pdf
-
第一本Docker书-完整版.pdf
-
使用SpringCloud和Docker实战微服务.pdf
-
K8S(kubernetes)学习指南.pdf
另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此!
-
Spring Boot学习教程.pdf
-
SpringBoo核心宝典.pdf
-
第一本Docker书-完整版.pdf
-
使用SpringCloud和Docker实战微服务.pdf
-
K8S(kubernetes)学习指南.pdf
[外链图片转存中…(img-bSOxMytz-1714576178532)]
另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此!
[外链图片转存中…(img-WWxLN215-1714576178532)]