1. 从菜单找到对象存储服务

开通阿里云的对象存储服务OSS_spring

2. 管理控制台

开通阿里云的对象存储服务OSS_spring_02

3. 创建Bucket

开通阿里云的对象存储服务OSS_json_03

开通阿里云的对象存储服务OSS_json_04

4. 获取对应SDK

开通阿里云的对象存储服务OSS_html_05

​https://help.aliyun.com/document_detail/32013.html?spm=5176.8466032.0.0.2a3e1450JpDna1​

从概览中获取EndPoint

开通阿里云的对象存储服务OSS_json_06

展示实例代码:

开通阿里云的对象存储服务OSS_json_07

5. 配置访问控制权限

开通阿里云的对象存储服务OSS_json_08

6. 开通子账户

开通阿里云的对象存储服务OSS_json_09

开通阿里云的对象存储服务OSS_spring_10

开通阿里云的对象存储服务OSS_html_11

7.根据需要设置授权

开通阿里云的对象存储服务OSS_spring_12

 

如果使用的 springboot项目的话:

​https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md​

参照以下demo

​Alibaba Cloud OSS Example​​ 

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alicloud-oss</artifactId>
</dependency>

在配置中添加一下参数 

spring.cloud.alicloud.oss.sts.access-key=
spring.cloud.alicloud.oss.sts.secret-key=
spring.cloud.alicloud.oss.endpoint=

​https://help.aliyun.com/document_detail/31926.html?spm=a2c4g.11186623.4.3.163c74b8ZdDkbY​

采用从服务端获取签名后,又客户端拿着签名直接上传 , 这样前端会涉及跨域的问题,需要在阿里云中进行设置

开通阿里云的对象存储服务OSS_spring_13

开通阿里云的对象存储服务OSS_spring_14

 


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String accessId = "<yourAccessKeyId>"; // 请填写您的AccessKeyId。
String accessKey = "<yourAccessKeySecret>"; // 请填写您的AccessKeySecret。
String endpoint = "oss-cn-hangzhou.aliyuncs.com"; // 请填写您的 endpoint。
String bucket = "bucket-name"; // 请填写您的 bucketname 。
String host = "https://" + bucket + "." + endpoint; // host的格式为 bucketname.endpoint
// callbackUrl为 上传回调服务器的URL,请将下面的IP和Port配置为您自己的真实信息。
String callbackUrl = "http://88.88.88.88:8888";
String dir = "user-dir-prefix/"; // 用户上传文件时指定的前缀。

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessId, accessKey);
try {
long expireTime = 30;
long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
Date expiration = new Date(expireEndTime);
PolicyConditions policyConds = new PolicyConditions();
policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);

String postPolicy = client.generatePostPolicy(expiration, policyConds);
byte[] binaryData = postPolicy.getBytes("utf-8");
String encodedPolicy = BinaryUtil.toBase64String(binaryData);
String postSignature = client.calculatePostSignature(postPolicy);

Map<String, String> respMap = new LinkedHashMap<String, String>();
respMap.put("accessid", accessId);
respMap.put("policy", encodedPolicy);
respMap.put("signature", postSignature);
respMap.put("dir", dir);
respMap.put("host", host);
respMap.put("expire", String.valueOf(expireEndTime / 1000));
// respMap.put("expire", formatISO8601Date(expiration));

JSONObject jasonCallback = new JSONObject();
jasonCallback.put("callbackUrl", callbackUrl);
jasonCallback.put("callbackBody",
"filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}");
jasonCallback.put("callbackBodyType", "application/x-www-form-urlencoded");
String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());
respMap.put("callback", base64CallbackBody);

JSONObject ja1 = JSONObject.fromObject(respMap);
// System.out.println(ja1.toString());
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET, POST");
response(request, response, ja1.toString());

} catch (Exception e) {
// Assert.fail(e.getMessage());
System.out.println(e.getMessage());
} finally {
ossClient.shutdown();
}
}