oss相关代码改写

This commit is contained in:
macro 2019-05-25 15:22:27 +08:00
parent ba80139fcd
commit 2a520725de
6 changed files with 53 additions and 15 deletions

View File

@ -1,11 +1,17 @@
package com.macro.mall.dto; package com.macro.mall.dto;
import io.swagger.annotations.ApiModelProperty;
/** /**
* oss上传成功后的回调参数
* Created by macro on 2018/5/17. * Created by macro on 2018/5/17.
*/ */
public class OssCallbackParam { public class OssCallbackParam {
@ApiModelProperty("请求的回调地址")
private String callbackUrl; private String callbackUrl;
@ApiModelProperty("回调是传入request中的参数")
private String callbackBody; private String callbackBody;
@ApiModelProperty("回调时传入参数的格式,比如表单提交形式")
private String callbackBodyType; private String callbackBodyType;
public String getCallbackUrl() { public String getCallbackUrl() {

View File

@ -1,13 +1,21 @@
package com.macro.mall.dto; package com.macro.mall.dto;
import io.swagger.annotations.ApiModelProperty;
/** /**
* oss上传文件的回调结果
* Created by macro on 2018/5/17. * Created by macro on 2018/5/17.
*/ */
public class OssCallbackResult { public class OssCallbackResult {
@ApiModelProperty("文件名称")
private String filename; private String filename;
@ApiModelProperty("文件大小")
private String size; private String size;
@ApiModelProperty("文件的mimeType")
private String mimeType; private String mimeType;
@ApiModelProperty("图片文件的宽")
private String width; private String width;
@ApiModelProperty("图片文件的高")
private String height; private String height;
public String getFilename() { public String getFilename() {

View File

@ -1,15 +1,24 @@
package com.macro.mall.dto; package com.macro.mall.dto;
import io.swagger.annotations.ApiModelProperty;
/** /**
* 获取OSS上传授权返回结果 * 获取OSS上传文件授权返回结果
* Created by macro on 2018/5/17. * Created by macro on 2018/5/17.
*/ */
public class OssPolicyResult { public class OssPolicyResult {
@ApiModelProperty("访问身份验证中用到用户标识")
private String accessKeyId; private String accessKeyId;
@ApiModelProperty("用户表单上传的策略,经过base64编码过的字符串")
private String policy; private String policy;
@ApiModelProperty("对policy签名后的字符串")
private String signature; private String signature;
@ApiModelProperty("上传文件夹路径前缀")
private String dir; private String dir;
@ApiModelProperty("oss对外服务的访问域名")
private String host; private String host;
@ApiModelProperty("上传成功后的回调设置")
private String callback;
public String getAccessKeyId() { public String getAccessKeyId() {
return accessKeyId; return accessKeyId;
@ -50,4 +59,12 @@ public class OssPolicyResult {
public void setHost(String host) { public void setHost(String host) {
this.host = host; this.host = host;
} }
public String getCallback() {
return callback;
}
public void setCallback(String callback) {
this.callback = callback;
}
} }

View File

@ -10,6 +10,12 @@ import javax.servlet.http.HttpServletRequest;
* Created by macro on 2018/5/17. * Created by macro on 2018/5/17.
*/ */
public interface OssService { public interface OssService {
/**
* oss上传策略生成
*/
OssPolicyResult policy(); OssPolicyResult policy();
/**
* oss上传成功回调
*/
OssCallbackResult callback(HttpServletRequest request); OssCallbackResult callback(HttpServletRequest request);
} }

View File

@ -20,6 +20,7 @@ import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
/** /**
* oss上传管理Service实现类
* Created by macro on 2018/5/17. * Created by macro on 2018/5/17.
*/ */
@Service @Service
@ -57,10 +58,10 @@ public class OssServiceImpl implements OssService {
// 文件大小 // 文件大小
long maxSize = ALIYUN_OSS_MAX_SIZE * 1024 * 1024; long maxSize = ALIYUN_OSS_MAX_SIZE * 1024 * 1024;
// 回调 // 回调
// OssCallbackParam callback = new OssCallbackParam(); OssCallbackParam callback = new OssCallbackParam();
// callback.setCallbackUrl(ALIYUN_OSS_CALLBACK); callback.setCallbackUrl(ALIYUN_OSS_CALLBACK);
// callback.setCallbackBody("filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}"); callback.setCallbackBody("filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}");
// callback.setCallbackBodyType("application/x-www-form-urlencoded"); callback.setCallbackBodyType("application/x-www-form-urlencoded");
// 提交节点 // 提交节点
String action = "http://" + ALIYUN_OSS_BUCKET_NAME + "." + ALIYUN_OSS_ENDPOINT; String action = "http://" + ALIYUN_OSS_BUCKET_NAME + "." + ALIYUN_OSS_ENDPOINT;
try { try {
@ -71,13 +72,13 @@ public class OssServiceImpl implements OssService {
byte[] binaryData = postPolicy.getBytes("utf-8"); byte[] binaryData = postPolicy.getBytes("utf-8");
String policy = BinaryUtil.toBase64String(binaryData); String policy = BinaryUtil.toBase64String(binaryData);
String signature = ossClient.calculatePostSignature(postPolicy); String signature = ossClient.calculatePostSignature(postPolicy);
// String callbackData = BinaryUtil.toBase64String(JSONUtil.parse(callback).toString().getBytes("utf-8")); String callbackData = BinaryUtil.toBase64String(JSONUtil.parse(callback).toString().getBytes("utf-8"));
// 返回结果 // 返回结果
result.setAccessKeyId(ossClient.getCredentialsProvider().getCredentials().getAccessKeyId()); result.setAccessKeyId(ossClient.getCredentialsProvider().getCredentials().getAccessKeyId());
result.setPolicy(policy); result.setPolicy(policy);
result.setSignature(signature); result.setSignature(signature);
result.setDir(dir); result.setDir(dir);
// result.setCallback(callbackData); result.setCallback(callbackData);
result.setHost(action); result.setHost(action);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("签名生成失败", e); LOGGER.error("签名生成失败", e);

View File

@ -15,16 +15,16 @@ jwt:
aliyun: aliyun:
oss: oss:
endpoint: oss-cn-shenzhen.aliyuncs.com endpoint: oss-cn-shenzhen.aliyuncs.com # oss对外服务的访问域名
accessKeyId: test accessKeyId: test # 访问身份验证中用到用户标识
accessKeySecret: test accessKeySecret: test # 用户用于加密签名字符串和oss用来验证签名字符串的密钥
bucketName: macro-oss bucketName: macro-oss # oss的存储空间
policy: policy:
expire: 300 expire: 300 # 签名有效期(S)
maxSize: 10 maxSize: 10 # 上传文件大小(M)
callback: http://localhost:8080/aliyun/oss/callback callback: http://39.98.190.128:8080/aliyun/oss/callback # 文件上传成功后的回调地址
dir: dir:
prefix: mall/images/ prefix: mall/images/ # 上传文件夹路径前缀
logging: logging:
level: level: