• 阿里云oss


    1导包

     <dependencies>
            <!--aliyunOSS-->
            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
    <!--            <version>2.8.3</version>-->
            </dependency>
    <!--        <aliyun-sdk-oss.version>3.1.0</aliyun-sdk-oss.version>-->
            <dependency>
                <groupId>com.atguigu</groupId>
                <artifactId>common_utils</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <scope>compile</scope>
            </dependency>

    2去阿里云网站 对象存储开启oss 并且开启asscess key

    3 得到需要的几个参数(

    //定义公开静态常量
    public static String END_POIND;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String BUCKET_NAME;

    4把参数包装成工具类

    package com.jc.oss.utils;
    
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    //当项目已启动,spring接口,spring加载之后,执行接口一个方法
    @Component
    public class ConstantPropertiesUtils 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;
        }
    }

    5编写实现类 根据官网教程来写

    package com.jc.oss.service.impl;
    
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import com.jc.oss.service.OssService;
    import com.jc.oss.utils.ConstantPropertiesUtils;
    //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 {
    
        //上传头像到oss
        @Override
        public String uploadFileAvatar(MultipartFile file) {
            // 工具类获取值
            String endpoint = ConstantPropertiesUtils.END_POIND;
            String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
            String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
            String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
    
            try {
                // 创建OSS实例。
                           OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
                //获取上传文件输入流
                InputStream inputStream = file.getInputStream();
                //获取文件名称
                String fileName = file.getOriginalFilename();
    
                //1 在文件名称里面添加随机唯一的值
                String uuid = UUID.randomUUID().toString().replaceAll("-","");
                // yuy76t5rew01.jpg
                fileName = uuid+fileName;
    
                //2 把文件按照日期进行分类
                //获取当前日期
                //   2019/11/12
    //            String datePath = new DateTime().toString("yyyy/MM/dd");
    //            //拼接
    //            //  2019/11/12/ewtqr313401.jpg
    //            fileName = datePath+"/"+fileName;
    
                //调用oss方法实现上传
                //第一个参数  Bucket名称
                //第二个参数  上传到oss文件路径和文件名称   aa/bb/1.jpg
                //第三个参数  上传文件输入流
                ossClient.putObject(bucketName,fileName , inputStream);
    
                // 关闭OSSClient。
                ossClient.shutdown();
    
                //把上传之后文件路径返回
                //需要把上传到阿里云oss路径手动拼接出来
                //  https://edu-guli-1010.oss-cn-beijing.aliyuncs.com/01.jpg
                String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
                return url;
            }catch(Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    

    5编写controller

    上传文件 返回文件连接

    package com.jc.oss.controller;
    
    //import com.atguigu.commonutils.R;
    import com.jc.commonutils.R;
    import com.jc.oss.service.OssService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    @RestController
    @RequestMapping("/eduoss/fileoss")
    @CrossOrigin
    public class OssController {
    
        @Autowired
        private OssService ossService;
    
        //上传头像的方法
        @PostMapping
        public R uploadOssFile(MultipartFile file) {
            //获取上传文件  MultipartFile
            //返回上传到oss的路径
            String url = ossService.uploadFileAvatar(file);
            return R.ok().data("url",url);
        }
    }
  • 相关阅读:
    android studio的lib和jniLibs
    Android Broadcast Receive
    上周热点回顾(7.18-7.24)团队
    上周热点回顾(7.11-7.17)团队
    .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点团队
    上周热点回顾(7.4-7.10)团队
    上周热点回顾(6.27-7.3)团队
    .NET跨平台之旅:将示例站点升级至ASP.NET Core 1.0团队
    上周热点回顾(6.20-6.26)团队
    上周热点回顾(6.13-6.19)团队
  • 原文地址:https://www.cnblogs.com/ziwang520/p/16220978.html
Copyright © 2020-2023  润新知