第一步:.添加依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
第二步,配置yml文件
aliyun: oss: endpoint: 写自己的 keyId: 写自己的 keySecret: 写自己的 bucketName: 写自己的
第三步:写pojo类
@Data @Component @ConfigurationProperties(prefix = "aliyun.oss") public class OssProperties implements InitializingBean { private String endpoint; private String keyId; private String keySecret; private String bucketName; public static String ENDPOINT; public static String KEY_ID; public static String KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { ENDPOINT = endpoint; KEY_ID = keyId; KEY_SECRET = keySecret; BUCKET_NAME = bucketName; } }
第四步,编写controller
public R upload(@RequestParam("file") MultipartFile file, @RequestParam("module") String module) throws IOException { //获取文件流 InputStream inputStream = file.getInputStream(); //获取文件的原始吗名 String originalFilename = file.getOriginalFilename(); //得到图片的地址 String url = fileService.upload(inputStream, module, originalFilename); return R.ok().message("文件上传成功").data("url",url); }
第五步:编写实现类
Override public String upload(InputStream inputStream, String module, String fileName) { // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build( OssProperties.ENDPOINT, OssProperties.KEY_ID, OssProperties.KEY_SECRET); //判断BUCKET_NAME是否存在 if(!ossClient.doesBucketExist(OssProperties.BUCKET_NAME)){ //如果不存在,创建文件 ossClient.createBucket(OssProperties.BUCKET_NAME); //设置文件有读写得权限 ossClient.setBucketAcl(OssProperties.BUCKET_NAME, CannedAccessControlList.PublicRead); } //文件上传流 //文件目录结构"module/2021/05/14/uuid.jpg" //构建文件日期格式 String timeFolder = new DateTime().toString("yyyy/MM/dd"); //文件名生成 fileName = UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf(".")); String key = module+"/"+timeFolder+"/"+fileName; ossClient.putObject(OssProperties.BUCKET_NAME,key,inputStream); //关闭OSSClient ossClient.shutdown(); return "Https://"+OssProperties.BUCKET_NAME+"."+OssProperties.ENDPOINT+"/"+key; }