springboot整合阿里云OSS做服务端签名让微信小程序文件直传OSS
1、需求:
想让小程序直接上传图片、文件到OSS存储,不需要经过我的服务器接收文件再转发到OSS存储。
好处
-
可以减轻自己服务器的压力,和不必要的麻烦。
-
有利于维护和扩展(比如扩容、迁移等等)。
-
可以更加快的存储到OSS中,不需要多次来回传输。
-
不占用自己服务器的带宽,阿里的OSS节点处理更快。
-
等等。。。
2、基本原理介绍(官方描述,我觉得很简单了)
服务端签名后前端(小程序)直传的原理如下:
- 用户发送请求到自己服务器获取上传的Policy和签名。
- 自己的服务器返回前端直传oss需要Policy和签名给用户。
- 用户直接上传数据到OSS。
3、springboot 搞起来
1.新建一个springboot 项目,添加依赖
<!--阿里oss-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.3</version>
</dependency>
2.编写一个OSS的配置类(可以根据自己的需求来,注入等方式都可以)
public class AliOssConfig {
/**
* 填写您的AccessKeyId
*/
public final static String accessId = "xxxx";
/**
* 填写您的AccessKeySecret
*/
public final static String accessKey = "xxxxx";
/**
* 填写您的 endpoint(地域节点),就是你OSS的区域节点的域名
*/
public final static String endpoint = "xxxx.aliyuncs.com";
/**
* 填写您的 bucketName ,就是你再OSS创建Bucket的名称
*/
public final static String bucket = "xxx";
/**
* 直传地址,格式为 bucketName.endpoint (Bucket域名)
*/
public final static String host = "https://" + bucket +"."+ endpoint;
/*
* ============= 配置上传过期时间、大小等等 =========
*/
/**
* 上传截止时间(秒)
*/
public final static long expireTime = 30;
/**
* 上传文件最小(字节)
*/
public final static long min = 0;