1. 從菜單找到對象存儲服務
2. 管理控制檯
3. 創建Bucket
4. 獲取對應SDK
https://help.aliyun.com/document_detail/32013.html?spm=5176.8466032.0.0.2a3e1450JpDna1
從概覽中獲取EndPoint
展示實例代碼:
5. 配置訪問控制權限
6. 開通子賬戶
7.根據需要設置授權
如果使用的 springboot項目的話:
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
參照以下demo
<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
採用從服務端獲取簽名後,又客戶端拿着簽名直接上傳 , 這樣前端會涉及跨域的問題,需要在阿里雲中進行設置
後端java示例代碼 : 摘自阿里雲https://help.aliyun.com/document_detail/91868.html?spm=a2c4g.11186623.2.15.320a6e2806pupl#concept-ahk-rfz-2fb
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();
}
}