1配置jar包

    1. <!-- 阿里云对象存储-OSS -->
    2. <dependency>
    3. <groupId>com.aliyun.oss</groupId>
    4. <artifactId>aliyun-sdk-oss</artifactId>
    5. <version>3.10.2</version>
    6. </dependency>

    2.配置文件

    1. spring:
    2. datasource:
    3. driver-class-name: com.mysql.cj.jdbc.Driver
    4. url: jdbc:mysql://110.40.192.129:3308/db_data212?serverTimezone=Asia/Shanghai
    5. username: root
    6. password: zzjava
    7. type: com.alibaba.druid.pool.DruidDataSource
    8. 设置德鲁伊链接池
    9. druid:
    10. initialSize: 5
    11. minIdle: 5
    12. maxActive: 20
    13. filters: stat,wall
    14. stat-view-servlet:
    15. enabled: true
    16. url-pattern: "/druid/*"
    17. 设置最大上传文件大小
    18. servlet:
    19. multipart:
    20. max-file-size: 10MB
    21. max-request-size: 30MB

    3.书写工具类

    1. package com.feri.bootplusstudy.util;
    2. import com.aliyun.oss.OSS;
    3. import com.aliyun.oss.OSSClientBuilder;
    4. import java.io.ByteArrayInputStream;
    5. import java.io.File;
    6. import java.util.Calendar;
    7. import java.util.Date;
    8. /**
    9. * @author Feri
    10. * @date 2021/12/28 16:30
    11. * @description:TODO 阿里云-对象存储-OSS
    12. */
    13. public class AliOssUtils {
    14. // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    15. static String endpoint = "oss-cn-
    16. .aliyuncs.com";
    17. // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    18. static String accessKeyId = "LTAI5tKz7sP4xaaRsTuxoTjx";
    19. static String accessKeySecret = "mFCyf0QxVmB6kGAacAxdtMqmQwcRIx";
    20. //连接数据库的名字
    21. static String bucket="data2112";
    22. // 创建OSSClient实例。
    23. public static OSS ossClient ;
    24. static {
    25. ossClient= new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    26. }
    27. /**
    28. * 实现资源上传,并获取访问路径*/
    29. public static String upload(String obj, byte[] data, Date date){
    30. //1.实现资源上传
    31. ossClient.putObject(bucket,obj,new ByteArrayInputStream(data));
    32. //2.生成访问路径
    33. return ossClient.generatePresignedUrl(bucket,obj,date).toString();
    34. }
    35. /**
    36. * 实现资源的删除*/
    37. public static boolean delete(String obj){
    38. try{
    39. ossClient.deleteObject(bucket,obj);
    40. return true;
    41. }catch (Exception e){
    42. return false;
    43. }
    44. }
    45. /**
    46. * 验证资源是否存在*/
    47. public static boolean exists(String obj){
    48. return ossClient.doesObjectExist(bucket,obj);
    49. }
    50. /**
    51. * 创建对象的访问链接*/
    52. public static String createUrl(String obj,Date date){
    53. return ossClient.generatePresignedUrl(bucket,obj,date).toString();
    54. }
    55. }

    4.controller代码

    1. package com.feri.bootplusstudy.controller;
    2. import com.feri.bootplusstudy.util.AliOssUtils;
    3. import com.feri.bootplusstudy.util.DateUtils;
    4. import com.feri.bootplusstudy.util.FileUtils;
    5. import org.springframework.web.bind.annotation.PostMapping;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestPart;
    8. import org.springframework.web.bind.annotation.RestController;
    9. import org.springframework.web.multipart.MultipartFile;
    10. import java.io.IOException;
    11. import java.util.Calendar;
    12. /**
    13. * @author Feri
    14. * @date 2021/12/28 16:54
    15. * @description:TODO
    16. */
    17. @RestController
    18. @RequestMapping("/api/oss/")
    19. public class OssController {
    20. @PostMapping("uploadimg.do")
    21. //原生的swager不能使用文件上传测试所以添加这个配置就可以了@RequestPart("file")
    22. public String upload(@RequestPart("file") MultipartFile file) throws IOException {
    23. String fn = FileUtils.rename(file.getOriginalFilename());
    24. return AliOssUtils.upload(fn,file.getBytes(), DateUtils.getYearTime(1));
    25. }
    26. }

    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();
        }
    }