• 阿里云OSS上传


    引入阿里云OSS依赖

                <dependency>
                    <groupId>com.aliyun.oss</groupId>
                    <artifactId>aliyun-sdk-oss</artifactId>
                    <version>3.1.0</version>
                </dependency>
    

      现在已经到3.10了,具体可以参见阿里云OSS官网

    项目目录结构

    配置文件中放置OSS关键信息例如:

    #阿里云 OSS
    #不同的服务器,地址不同
    aliyun.oss.file.endpoint=//自己的地域节点
    aliyun.oss.file.keyid=//自己的keyid
    aliyun.oss.file.keysecret=//自己的keysecret
    #bucket可以在控制台创建,也可以使用java代码创建
    aliyun.oss.file.bucketname=//自己的bucketname

     ConstantPropertiesUtil为读取配置文件中的常量

    @Component
    public class ConstantPropertiesUtil implements InitializingBean {
    
        //读取配置文件内容
        @Value("${aliyun.oss.file.endpoint}")
        private String endpoint;
    
        @Value("${aliyun.oss.file.keyid}")
        private String keyId;
    
        @Value("${aliyun.oss.file.keysecret}")
        private String keySecret;
    
        @Value("${aliyun.oss.file.bucketname}")
        private String bucketName;
    
        //定义公开静态常量
        public static String END_POIND;
        public static String ACCESS_KEY_ID;
        public static String ACCESS_KEY_SECRET;
        public static String BUCKET_NAME;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            END_POIND = endpoint;
            ACCESS_KEY_ID = keyId;
            ACCESS_KEY_SECRET = keySecret;
            BUCKET_NAME = bucketName;
        }
    }
    

      controller

        @Autowired
        private OssService ossService;
        //上传头像的方法
        @PostMapping
        public R uploadOssFile(MultipartFile file) {
            //获取上传文件  MultipartFile
            //返回上传到oss的路径
            String url = ossService.uploadOssFile(file);
            return R.ok().data("url",url);
        }
    

      serviceimpl  输出可以去掉

     @Override
        public String uploadOssFile(MultipartFile file) {
            //获取四个值
            String endpoint = ConstantPropertiesUtil.END_POIND;
            String accessKeyId = ConstantPropertiesUtil.ACCESS_KEY_ID;
            String accessKeySecret = ConstantPropertiesUtil.ACCESS_KEY_SECRET;
            String bucketName = ConstantPropertiesUtil.BUCKET_NAME;
            //获取文件名称
            String fileName = file.getOriginalFilename();
            //获取随机字符串并拼接文件名
            String s = UUID.randomUUID().toString().replaceAll("-", "");
            //获得新的文件名
            String newFileName=s+fileName;
            System.out.println(newFileName);
            //获取当前年月日
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String format = sdf.format(new Date());
            System.out.println(format);
            //日期加文件民拼接成为OSS中的路径
            String OSSPath=format+"/"+newFileName;
            System.out.println(OSSPath);
            //开启OSS
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            try {
                //获取文件流
                InputStream inputStream = file.getInputStream();
                //传入地域节点,OSS中的路径例如a/bb/c.jpg,文件流
                ossClient.putObject(bucketName, OSSPath,inputStream);
            }catch (Exception e){
            }
            finally {
                // 关闭OSSClient。
                ossClient.shutdown();
            }
            //把上传之后文件路径返回
            //需要把上传到阿里云oss路径手动拼接出来
    
            String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
            return url;
        }
    

      测试

  • 相关阅读:
    scala :: , +:, :+ , ::: , ++ 的区别
    Scala 函数式编程思想
    Scala 关键字
    HDFS 的内存存储是什么?
    LRU
    高并发情况限流
    Java中List集合去除重复数据的方法
    MySQL支持的跨库事务
    死磕ConcurrentHashMap 1.8源码解析
    一致性Hash算法
  • 原文地址:https://www.cnblogs.com/pansin/p/14294517.html
Copyright © 2020-2023  润新知