文件上传阿里云OSS

spring boot + mybatis-plus

pom.xml 导包

      <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>

        <!--        阿里云 对象存储-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.0</version>
        </dependency>    

 

.yml 配置

  servlet:
    multipart:
      max-request-size: 100MB
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

  

上传文件的工具类

public class AliOssUtil {

    //存储空间所在的城市域名
    public static final String endpoint = "oss-cn-beijing.aliyuncs.com";
    //账号的key -保密
    public static final String accessKeyId = "LTAI5t5ZPUfK5nTEUPCwzSxP";
    //账号的密钥 -保密
    public static final String accessKeySecret = "BdWzLO0B8Z7YhzBK3Hx2CvQJudyo32";
    //存储空间名
    public static final String bucketName = "Java2022";

    //阿里云 Oss的客户端对象
    private static OSS client;
    static {
        //  完成实例化
        client = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
    }

    /**
     * @Description: 上传资源,新增文件
     * @param: [fileName 上传的文件名, data 文件内容, date 访问地址的有效期]
     * @return: 返回 访问地址
    */
    public static String upload(String fileName, byte[] data, Date date){
        //  上传文件内容
        client.putObject(bucketName,fileName,new ByteArrayInputStream(data));
        //  返回访问地址
        return getUrl(fileName,date);
    }

    /**
     * @Description: 获取对象的访问地址
     * @param: [fileName 文件名, date 访问地址的有效期]
     * @return: java.lang.String
    */
    public static String getUrl(String fileName,Date date){
        return client.generatePresignedUrl(bucketName,fileName,date).toString();
    }

    /**
     * @Description: 验证对象是否存在
     * @param: [fileName 文件名]
     * @return: boolean
    */
    public static boolean exists(String fileName){
        return client.doesObjectExist(bucketName,fileName);
    }

    /**
     * @Description: 删除文件
     * @param: [fileName 文件名]
     * @return: boolean
    */
    public static boolean delete(String fileName){
        try {
            client.deleteObject(bucketName,fileName);
            return true;
        }catch (Exception e){
            return false;
        }

    }
    
}

  

控制器写法

 @PostMapping("/uploadOss.do")
    public String uploadOss(@RequestPart MultipartFile file) throws IOException {
        //  验证文件是否为空
        if (!file.isEmpty()){
            //  获取文件名
            String fn = file.getOriginalFilename();
            //  获取文件内容
            byte[] data = file.getBytes();
            //  存储文件到阿里云的OSS服务器
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.YEAR,10);
            String url = AliOssUtil.upload(fn, data, calendar.getTime());
            return url;
        }else {
            return "文件为空!!!";
        }
    }

  

 

posted @ 2022-09-07 21:36  小※兽  阅读(107)  评论(0)    收藏  举报