首先这操作OSS的文档在Java - 对象存储 OSS - 阿里云

1.导入maven依赖

<dependencies>
 
 
<!-- 阿里云oss依赖 -->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>

    <!-- 日期工具栏依赖,用于后面生成日期的 -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>
</dependencies>

2. 在配置文件中配置OSS的相应内容:

#服务端口
server.port=8002
#服务名
spring.application.name=service-oss

#环境设置:dev、test、prod
spring.profiles.active=dev

#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=自己的地域结点
aliyun.oss.file.keyid=自己的id
aliyun.oss.file.keysecret=自己的密码
#bucket

可以在控制台创建,也可以使用java代码创建 aliyun.oss.file.bucketname=自己创建的bucket的名字

3. 新建一个工具类用来读取配置文件中的数据

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@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_POINT;
    public static String KEY_ID;
    public static String KEY_SECRET;
    public static String BUCKETNAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        END_POINT=endpoint;
        KEY_ID=keyId;
        KEY_SECRET=keySecret;
        BUCKETNAME=bucketname;
    }
}

4.业务逻辑代码

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.atguigu.oss.service.OssService;
import com.atguigu.oss.utils.ConstantPropertiesUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
@Service
public class OssServiceImpl implements OssService {
    @Override//参数中的文件上传到OSS中,
    public String uploadFileAvatar(MultipartFile file)  {
        // Endpoint以北京为例,其它Region请按实际情况填写。
        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKETNAME;
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().
                    build(endpoint, accessKeyId, accessKeySecret);//地域结点,id,密码

            //第2个参数:文件的名称
            String filename = file.getOriginalFilename();
            //让每个文件名称都不一样并且通过日期进行分组存储,否则后面的文件会覆盖掉前面的文件
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            filename = uuid + filename;
            String datePath = new DateTime().toString("yyyy/MM/dd");
            filename=datePath+"/"+filename;

            //第3个参数:获得文件的流
            InputStream inputStream = file.getInputStream();
            ossClient.putObject(bucketName,filename,inputStream);  //上传文件

            ossClient.shutdown();  //关闭该实例
            //把上传到阿里云的路径手动拼接出来,然后返回
            String url="https://"+bucketName+"."+endpoint+"/"+filename;
            return url;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

    }
}