阿里云 OSS 对象存储服务

天才阿梓 2024-4-24 96 4/24
  1. 1、首先导入阿里云oss sdk 依赖

    <!--阿里oss sdk-->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.17.2</version>
    </dependency>

     

  2. 2、创建controller

    @ApiOperation(value = "文件上传")
    @PostMapping("/uploadFile")
    public CommonResult<UploadFileDto> uploadFile(@RequestParam("file") MultipartFile file,@RequestParam(value = "fileType",required = false)Integer fileType,@RequestParam(value = "fileName",required = false)String fileName) throws Exception {
        // 上传至阿里云
        return uploadFileService.singleFileUpload(file,fileType,fileName);
    }

     

  3. 3、service

    /**
     * 阿里云oss文件上传
     *
     * @author yubin
     * @date 2024/4/2 16:08
     * @param file 文件
     * @param fileType 文件类型
     * @param fileName 文件名称
     * @return com.xinwei.olden.common.CommonResult<com.xinwei.olden.dto.UploadFileDto>
     */
    CommonResult<UploadFileDto> singleFileUpload(MultipartFile file, Integer fileType, String fileName);

     

  4. 4、实现类

    /**
     * 阿里云oss文件上传
     *
     * @author yubin
     * @date 2024/4/2 16:08
     * @param file 文件
     * @param fileType 文件类型
     * @param fileName 文件名称
     * @return com.xinwei.olden.common.CommonResult<com.xinwei.olden.dto.UploadFileDto>
     */
    CommonResult<UploadFileDto> singleFileUpload(MultipartFile file, Integer fileType, String fileName);

     

  5. 5、以及自己封装的工具类

    package com.xinwei.olden.util;
     
    import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    import com.xinwei.olden.dto.UploadFileDto;
    import com.xinwei.olden.service.UploadFileService;
    import com.xinwei.olden.vo.TeacherCertFileVo;
    import com.xinwei.olden.vo.UploadFileVo;
    import com.xinwei.olden.vo.req.FileZipReqVo;
    import lombok.Data;
    import org.apache.commons.io.FilenameUtils;
    import org.apache.commons.io.IOUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    import javax.annotation.PostConstruct;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.time.LocalDateTime;
    import java.util.*;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
     
    /**
     * 文件上传工具类
     *
     * @author yubin
     * @date 2023/11/23 17:19
     */
    @Component
    @Data
    @ConfigurationProperties(prefix = "upload")
    public class UploadUtils {
     
        
     
        /**
         * 验证图片格式是否允许上传
         *
         * @author yubin
         * @date 2023/11/24 10:37
         * @param targetValue 目标文件格式
         * @return boolean
         */
        public static boolean img_check(String targetValue) {
            String[] arr = new String[]{".jpg", ".jpeg", ".png", ".gif"};
            return Arrays.asList(arr).contains(targetValue);
        }
     
        /**
         * 验证文件格式是否允许上传
         *
         * @author yubin
         * @date 2023/11/24 10:37
         * @param targetValue 目标文件格式
         * @return boolean
         */
        public static boolean doc_check(String targetValue) {
            String[] arr = new String[]{".doc", ".pdf", ".docx", ".xlsx", ".xls"};
            return Arrays.asList(arr).contains(targetValue);
        }
     
    }

     

  6. 6、阿里oss配置类,放置阿里云oss服务器具体的配置参数

    package com.xinwei.olden.constant;
     
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    /**
     * OSS 阿里oss配置
     *
     * @author yubin
     * @date 2024/4/2 15:44
     */
    @Configuration
    @Data
    public class OssConfig {
     
        @Value("${oss.accessKeyId}")
        private String accessKeyId;
     
        @Value("${oss.accessKeySecret}")
        private String accessKeySecret;
     
        @Value("${oss.endPoint}")
        private String endPoint;
     
        @Value("${oss.bucketName}")
        private String bucketName;
     
        @Value("${oss.domain}")
        private String domain;
     
        @Bean
        public OSS getOssClient() {
            return new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
        }
     
    }

     

  7. 7、我部署的是springboot2.7.5项目,单机版的所有配置都写在application-dev.yml里

    oss:
      accessKeyId: oss的accessKeyId
      accessKeySecret: oss的accessKeySecret
      endPoint: 自己购买的服务器域名
      bucketName: 阿里云桶名称
      domain: 阿里云oss地址

     

以上都弄好后,接口上传文件至阿里云服务器

- THE END -

天才阿梓

4月27日16:56

最后修改:2024年4月27日
1

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论