开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):讲师管理-上传讲师头像(后端接口实现)】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11349
讲师管理-上传讲师头像(后端接口实现)
目录:
一、创建常量类,读取配置内容
二、创建 controller,创建 service
三、在 service 实现上传到 oss 过程
四、测试
一、创建常量类,读取配置内容
当项目已启动,spring 接口,spring 加载之后,执行接口一个方法@Component
public class ConstantPropertiesUtils implements InitializingBean
/读取配置文件内容
@Value("$(aliyun.oss.file.endpoint)”)
private String endpoint;
二、创建 controller,创建 service
@RestController
@RequestMapping("/eduoss/fileoss")
@CrossOrigin
public class OssController{
@Autowired
private Oss service oss service;
//上传头像的方法
@PostMapping
public R uploadOssFile(Multi part file file) {
//获取上传文件 Multi part file ,在括号中加上 Multi part file file,得到上传文件。
//返回上传到 oss 的路径
String url=oss service.uploadFileAvatar(file);
//返回值,在表中需要存储地址或者路径。
return R.ok().data("url",url);
}
}
post 提交做上传,Multi part file 得到上传文件,让方法返回 oss 里的路径。
三、在 service 实现上传到 oss 过程
service 中没有方法,把方法创建出来,直接用快捷键创建。
//上传头像到 oss
@0verride
public String uploadFileAvatar(MultipartFile file)
//工具类获取值,来获取密钥
String endpoint =ConstantPropertiesUtils.END_POIND;
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID; String accessKeySecret = ConstantPropertiesUtils.
ACCESS_KEY_SBCRET;
String bucketName = ConstantPropertiesUtils.
BUCKET_NAME;
//异常
try
catch
// 创建 OSS 实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//引入依赖
//获取上传文件输入流
InputStream inputStream = file.getInputStream();
//获取文件名称
String fileName = file.getOriginalFilename();
//调用 oss 方法实现上传
//第一个参数 Bucket名称
//第二个参数 上传到 oss 文件路径和文件名称 /aa/bb/1.jpg
//第三个参数 上传文件输入流
ossClient.putObject(bucketName, fileName,inputStream);
//关闭 OSSClient。
ossClient.shutdown()!
//把上传之后文件路径返回
//需要把上传到阿里云oss路径手动拼接出来
//https://edu-guli-1010.oss-cn-beijing.aliyuncs.com/01.jpg
String url =“
https://"+bucketName+”.“+endpoint+"/"+fileName;
return url;
catch(Exception e)(
e.printStackTrace();
return null;
- 方法就是上传头像到 oss,强调这个代码不需要去记,这个代码简单,通过文档都能找到。
找到阿里文档,里面有学习路径,点击进入页面有上传文件,用简单上传就可以了。用上传文件流这种方式。
- 在过程中会出现一些小问题,课件中的版本是2.8.3的版本,这个版本比目前的版本低,所以在课件中的版本中,它的方法叫OssClient,现在用的方法是3.1.0。
- 第一步就是用工具类把固定值得到,第二步创建一个oss对象,创建之后得到文件输入流,得到文件名称都得到后,调用oss中的方法,在oss方法里面这个方法叫做:putObject,
三个参数:是 bucket name、filename(文件名称可以带路径)、input Stream(输入流),之后直接上传。
四、测试
最后做测试。
用 swagger 进行测试,先启动。
因为端口是8002,所以用8002做测试。
地址是:8002/swagger-ui.html
上传文件:
点击选择文件就是上传。点击 try it out
上传显示成功,先看返回结果,看url地址,点击下载,最终地址返回。
或者到控制台中刷新看,也是可以的,最后就把这个文件上传成功了。