SpringCloudAlibaba使用OSS图片上传(手把手教程)

前言

在实习过程中,遇到了这样的需求,为了方便以后的重复使用便记录了下来。
前端接口要求:

请求URL:http://localhost:9527/admin/image/AliYunImgUpload
请求方法:POST
表单数据:file(二进制)

开发流程

一、添加依赖

<!--阿里云对象存储-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
</dependency>

二、申请账号

登录阿里云官网,进入控制台,搜索RAM,点击访问控制:
在这里插入图片描述
创建用户:

在这里插入图片描述
手机验证码验证通过,然后授予权限:
在这里插入图片描述

在这里插入图片描述
授权成功后点击完成
记录你的 AccessKey ID和AccessKey Secret信息。

三、开启OSS 对象存储

进入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<String> fileUpload(@RequestParam("file") MultipartFile file) throws IOException {
        /**
         * 3 个参数:
         * 1 bucketName
         * 2 FileName   文件的名称
         * 3 文件的路径
         */
        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图片上传的功能就完成啦(σ゚∀゚)σ…:*☆哎哟不错哦

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值