Day11-06.案例-文件上传-阿里云OSS-集成
1.新增员工进行图像上传的基本实现思路:
1.在新增员工的时候,我们需要上传员工的图像,而之所以需要上传员工的图像,是因为将来我们需要在系统页面当中来访问并展示这个员工的图像。要想完成这个操作,我们需要做两件事:
第一件事:需要上传这个员工的图像,并把这个图像保存起来。
第二件事:访问这个图像。
2.当我们在新增员工的时候,需要在表单中录入员工的基本信息,此时就需要上传员工的图像,当我们点击这个图片之后,就会让我们来选择我们要上传的图片,
当我们选择了某一张图片之后,此时就会进行文件上传操作,就会请求UploadController当中的文件上传接口,在文件上传接口当中:第一件事需要接收上传的图片,在服务器端在方法形参当中声明一个multipartFile类型的参数。接收到上传的文件之后,第二步需要将这个文件存储起来,现在我们需要交给阿里云OSS存储和管理,此时我们需要调用OSS的API来完成文件上传操作,最终将这个文件交给阿里云OSS来存储。
3.而在阿里云OSS对象存储服务当中,每一个文件都是要归属于某一个存储空间bucket的,所以在上传的时候,还需要指定我们要存储到哪一个存储空间bucket当中。而OSS当中的每个文件,他都会分配一个访问的URL,最终我们还需要在程序当中获取到这个图片访问的URL,最终再将这个URL返回给前端,这样前端就拿到了这个图片访问的URL,此时前端就会自动的给阿里云OSS对象存储服务来发送请求,最终获取到这张图片,在页面将这张图片展示出来。这样用户就可以看到,自己上传的图片马上就可以在界面展示出来。
4.点击保存之后,表单中的所有数据,包括图像的URL都会提交到服务端,会来请求新增员工的这个接口,此时Emp这个对象当中所封装的数据,既包括员工的基本信息,又包括员工的图像,最终将这个员工的信息保存到员工表当中,此时我们所添加的这个员工与这张图片就关联起来了。
UploadController:
1.接收上传的图片
2.将图片存储起来
3.返回图片访问的URL
阿里云集成-OSS
1.引入阿里云OSS上传文件工具类(由官方的示例代码改造而来)
2.上传图片接口开发
@Slf4j
@RestController
public class UploadController {
@Autowired
private AliOSSUtils aliOSSUtils;
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
log.info("文件上传:文件名{}", image.getOriginalFilename());
//调用阿里云OSS工具类进行文件上传
String url = aliOSSUtils.upload(image);
log.info("文件上传完成,文件访问的url为:{}", url);
return Result.success(url);
}
}
2.小结:
1.文件上传介绍
2.前端页面三要素(file表单、post方式、multipart/form-data)
3.服务端接收文件(MultipartFile)
4.文件存储方式
1.本地存储(无法直接访问、磁盘空间限制、磁盘损坏)
2.云存储OSS