1配置jar包
<!-- 阿里云对象存储-OSS --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency>
2.配置文件
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://110.40.192.129:3308/db_data212?serverTimezone=Asia/Shanghaiusername: rootpassword: zzjavatype: com.alibaba.druid.pool.DruidDataSource设置德鲁伊链接池druid:initialSize: 5minIdle: 5maxActive: 20filters: stat,wallstat-view-servlet:enabled: trueurl-pattern: "/druid/*"设置最大上传文件大小servlet:multipart:max-file-size: 10MBmax-request-size: 30MB
3.书写工具类
package com.feri.bootplusstudy.util;import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import java.io.ByteArrayInputStream;import java.io.File;import java.util.Calendar;import java.util.Date;/*** @author Feri* @date 2021/12/28 16:30* @description:TODO 阿里云-对象存储-OSS*/public class AliOssUtils {// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。static String endpoint = "oss-cn-.aliyuncs.com";// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。static String accessKeyId = "LTAI5tKz7sP4xaaRsTuxoTjx";static String accessKeySecret = "mFCyf0QxVmB6kGAacAxdtMqmQwcRIx";//连接数据库的名字static String bucket="data2112";// 创建OSSClient实例。public static OSS ossClient ;static {ossClient= new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);}/*** 实现资源上传,并获取访问路径*/public static String upload(String obj, byte[] data, Date date){//1.实现资源上传ossClient.putObject(bucket,obj,new ByteArrayInputStream(data));//2.生成访问路径return ossClient.generatePresignedUrl(bucket,obj,date).toString();}/*** 实现资源的删除*/public static boolean delete(String obj){try{ossClient.deleteObject(bucket,obj);return true;}catch (Exception e){return false;}}/*** 验证资源是否存在*/public static boolean exists(String obj){return ossClient.doesObjectExist(bucket,obj);}/*** 创建对象的访问链接*/public static String createUrl(String obj,Date date){return ossClient.generatePresignedUrl(bucket,obj,date).toString();}}
4.controller代码
package com.feri.bootplusstudy.controller;import com.feri.bootplusstudy.util.AliOssUtils;import com.feri.bootplusstudy.util.DateUtils;import com.feri.bootplusstudy.util.FileUtils;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestPart;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;import java.util.Calendar;/*** @author Feri* @date 2021/12/28 16:54* @description:TODO*/@RestController@RequestMapping("/api/oss/")public class OssController {@PostMapping("uploadimg.do")//原生的swager不能使用文件上传测试所以添加这个配置就可以了@RequestPart("file")public String upload(@RequestPart("file") MultipartFile file) throws IOException {String fn = FileUtils.rename(file.getOriginalFilename());return AliOssUtils.upload(fn,file.getBytes(), DateUtils.getYearTime(1));}}
5.获得未来某个日期的工具类
package com.feri.bootplusstudy.util;
import java.util.Calendar;
import java.util.Date;
/**
* @author Feri
* @date 2021/12/28 17:19
* @description:TODO
*/
public class DateUtils {
/**
* 获取指定年后的日期*/
public static Date getYearTime(int year){
//1.日历类
Calendar calendar = Calendar.getInstance();
//2.添加指定的年
calendar.add(Calendar.YEAR,year);
return calendar.getTime();
}
}
