前言开发流程
一、添加依赖二、申请账号三、开启OSS 对象存储四、添加配置文件五、文件上传接口开发
1、新建FileController2、MultipartFile 序列化问题
前言在实习过程中,遇到了这样的需求,为了方便以后的重复使用便记录了下来。
前端接口要求:
开发流程 一、添加依赖请求URL:http://localhost:9527/admin/image/AliYunImgUpload
请求方法:POST
表单数据:file(二进制)
二、申请账号com.alibaba.cloud spring-cloud-starter-alicloud-oss
登录阿里云官网,进入控制台,搜索RAM,点击访问控制:
创建用户:
手机验证码验证通过,然后授予权限:
授权成功后点击完成
记录你的 AccessKey ID和AccessKey Secret信息。
进入OSS控制中心(是的,这个需要钱):
创建Bucket:
信息确认无误后,点击确定。
记录地域地址:
到此注册的操作就完成了,下面看看代码怎么编写吧。
四、添加配置文件我的配置文件是通过拉取Nacos的配置进行的,跟一般的使用没啥太大差别。
spring:
cloud:
alicloud:
access-key: AccessKey ID
secret-key: AccessKey Secret
oss:
endpoint: 外网访问的Endpoint(地域节点)
五、文件上传接口开发
1、新建FileController
@RestController
@Api(tags = "文件上传")
public class FileController {
@Autowired
private OSS ossClient;
// Bucket 名称大家可自行查看自己的
@Value("${oss.bucket.name:Bucket 名称}")
private String bucketName;
@Value("${spring.cloud.alicloud.oss.endpoint}")
private String endPoint;
@ApiOperation(value = "文件上传")
@PostMapping("/image/AliYunImgUpload")
@ApiImplicitParams({
@ApiImplicitParam(name = "file" ,value = "你要上传的文件")
})
public R fileUpload(@RequestParam("file") MultipartFile file) throws IOException {
String fileName = DateUtil.today().replaceAll("-","/") + "/" + file.getOriginalFilename();
// 文件上传
ossClient.putObject(bucketName, fileName, file.getInputStream());
return R.ok("https://" + bucketName + "." + endPoint + "/" + fileName);
}
}
注意:如果跟我一样有web的日志记录需要做如下操作,否则会出现报错。
2、MultipartFile 序列化问题MultipartFile 使用fastjson 序列化会报错,因此我们需要忽略掉它:
修改WebLogAspect里面的代码:
if (parameterNames[i].equals("password") || parameterNames[i].equals("file")) {
methodParametersWithValues.put(parameterNames[i], "受限的支持类型");
}else{
methodParametersWithValues.put(parameterNames[i], args[i]);
}
至此关于SpringCloudAlibaba使用OOS图片上传的功能就完成啦(σ゚∀゚)σ…:*☆哎哟不错哦



