pro-cloud是一个SpringCloud alibaba dubbo调用 微服务架构springboot+mybatisplus基于oauth2.0认证,采用Nacos注册和配置中心,集成流量卫兵Sentinel的分布式架构。解决常见的分布式问题, redis/zookeeper分布式锁,分布式事务,灰度发布,sso单点登录log4j2日志,多租户问题等https://gitee.com/gitsc/pro-cloud
OSS生成签名
采用服务端签名后直传方案有个问题:大多数情况下,用户上传数据后,应用服务器需要知道用户上传了哪些文件以及文件名;如果上传了图片,还需要知道图片的大小等。为此OSS提供了上传回调方案。OSS回调完成后,应用服务器再将结果返回给客户端,以便服务端实时了解用户上传了什么文件
上传流程
流程如下:
- 用户向应用服务器请求上传Policy和回调。
- 应用服务器返回上传Policy和回调设置。
- 用户直接向OSS发送文件上传请求。
- OSS根据用户的回调设置,发送回调请求给应用服务器。
- 应用服务器返回响应给OSS。
- OSS将应用服务器返回的内容返回给用户。
当用户要上传一个文件到OSS,而且希望将上传的结果返回给应用服务器,这时就需要设置一个回调函数,将请求告知应用服务器。用户上传完文件后,不会直接得到返回结果,而是先通知应用服务器,再把结果转达给用户。
/**
* 签名生成 用浏览器直接上传时给js传递授权
* @param callback
* @param type 必填。防止恶意修改路径
* @return
*/
@CrossOrigin
@GetMapping("/policy")
public Result policy(@RequestParam(required = false) String callback, String type) {
FilePath filePath = FileOssUploadUtil.getFilePath(fileProps.getFilePaths(), type);
if (filePath == null) {
return Result.