• OSS对象存储


    OSS对象存储

    • 前提:注册阿里云账号,开通OSS服务(免费),获取AccessKey和AccessKeySecret

    1、导入依赖

    • 这里joda-time的版本必须为2.x.x版本,否则和后面代码冲突
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.10.2</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.5</version>
        <scope>compile</scope>
    </dependency>
    

    2、配置OSS基本信息

    server.port=8004
    
    spring.application.name=server_oss
    
    #spring.profiles.active=dev
    
    aliyun.oss.file.endpoint=oss-cn-hangzhou.aliyuncs.com
    aliyun.oss.file.keyid=*******************
    aliyun.oss.file.keysecret==*******************
    aliyun.oss.file.bucketname=wagn-edu
    

    3、创建类读取OSS基本信息

    package com.wagn.oss.utils;
    
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component
    public class ReadUtil 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_POINT;
    
        public static String KEY_ID;
    
        public static String KEY_SECRET;
    
        public static String BUCKET_NAME;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            END_POINT = endpoint;
            KEY_ID = keyid;
            KEY_SECRET = keysecret;
            BUCKET_NAME = bucketname;
        }
    }
    

    4、接口接收file流

    public class OssController {
        @Autowired
        private OssService ossService;
    
        @PostMapping("upload")
        public String upload(MultipartFile file){
            String rs = ossService.upload(file);
            return rs;
        }
    }
    

    5、上传图片并返回图片地址

    package com.wagn.oss.service.impl;
    
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import com.wagn.oss.service.OssService;
    import com.wagn.oss.utils.ReadUtil;
    import org.joda.time.DateTime;
    import org.springframework.stereotype.Service;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.InputStream;
    import java.util.UUID;
    
    @Service
    public class OssServiceImpl implements OssService {
        @Override
        public String upload(MultipartFile file) {
            
            String endpoint = ReadUtil.END_POINT;
            String accessKeyId = ReadUtil.KEY_ID;
            String accessKeySecret = ReadUtil.KEY_SECRET;
            String buketName = ReadUtil.BUCKET_NAME;
    
    
    
            try{
                // 创建OSSClient实例。
                OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
                // 上传文件流。
                InputStream inputStream = file.getInputStream();
                String objName = file.getOriginalFilename();
                objName = UUID.randomUUID().toString().replaceAll("-","")+objName;
                objName = new DateTime().toString("yyyy/MM/dd/")+objName;
                ossClient.putObject(buketName, objName, inputStream);
                // 关闭OSSClient。
                ossClient.shutdown();
    
                String url;
                url = "https://"+buketName+"."+endpoint+"/"+objName;
                return url;
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }
        }
    }
    
  • 相关阅读:
    acwing 873. 欧拉函数
    acwing 104. 货仓选址(排序不等式)
    csp 2019122 回收站选址(遍历)
    acwing 859. Kruskal算法求最小生成树
    acwing算法基础课整理ACM模板
    csp 2019092 小明种苹果(续)(模拟)
    acwing 4227. 找路(BFS最短路)
    acwing 4229. 哈密顿绕行世界问题(dfs)
    vue中使用typescript与js语法区别,个人感觉
    vue在配置scss由于node不是最新的,出现错误
  • 原文地址:https://www.cnblogs.com/yizhixiang/p/13658344.html
Copyright © 2020-2023  润新知