杨杰 6 سال پیش
والد
کامیت
6c8971a081

+ 7 - 7
src/main/java/com/llisoft/service/file/controller/FileController.java

@@ -9,9 +9,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import com.llisoft.service.file.service.OssService;
 import com.llisoft.service.file.service.OssService;
-import com.llisoft.service.file.vo.RequestDownloadVo;
-import com.llisoft.service.file.vo.RequestUploadVo;
-import com.llisoft.service.file.vo.ResponseUploadVo;
+import com.llisoft.service.file.vo.DownloadRequestVo;
+import com.llisoft.service.file.vo.UploadRequestVo;
+import com.llisoft.service.file.vo.UploadResponseVo;
 
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
@@ -27,14 +27,14 @@ public class FileController {
 	
 	
 	@ApiOperation(value="上传")
 	@ApiOperation(value="上传")
 	@PostMapping("/upload")
 	@PostMapping("/upload")
-	public ResponseUploadVo upload(@Valid @RequestBody RequestUploadVo uploadVo) throws Exception{
-		return ossService.upload(uploadVo.getPrefix(), uploadVo.getSuffix());
+	public UploadResponseVo upload(@Valid @RequestBody UploadRequestVo vo) throws Exception{
+		return ossService.upload(vo.getPrefix(), vo.getSuffix(), vo.isCdn());
 	}
 	}
 	
 	
 	@ApiOperation(value="下载")
 	@ApiOperation(value="下载")
 	@PostMapping("/download")
 	@PostMapping("/download")
-	public String download(@Valid @RequestBody RequestDownloadVo downloadVo) throws Exception{
-		return ossService.download(downloadVo.getKey());
+	public String download(@Valid @RequestBody DownloadRequestVo vo) throws Exception{
+		return ossService.download(vo.getKey());
 	}
 	}
 	
 	
 }
 }

+ 16 - 16
src/main/java/com/llisoft/service/file/service/OssService.java

@@ -18,7 +18,8 @@ import com.aliyun.oss.common.auth.DefaultCredentialProvider;
 import com.aliyun.oss.common.utils.BinaryUtil;
 import com.aliyun.oss.common.utils.BinaryUtil;
 import com.aliyun.oss.model.MatchMode;
 import com.aliyun.oss.model.MatchMode;
 import com.aliyun.oss.model.PolicyConditions;
 import com.aliyun.oss.model.PolicyConditions;
-import com.llisoft.service.file.vo.ResponseUploadVo;
+import com.llisoft.service.file.vo.UploadCdnResponseVo;
+import com.llisoft.service.file.vo.UploadResponseVo;
 
 
 /**
 /**
  * 阿里云OSS接口调用
  * 阿里云OSS接口调用
@@ -32,18 +33,16 @@ public class OssService {
 	@Value("${mta.debug}")
 	@Value("${mta.debug}")
 	private boolean debug;
 	private boolean debug;
 	
 	
+	@Value("${oss.url}")
+	private String url;
+	@Value("${oss.bucket}")
+	private String bucket;
 	@Value("${oss.endpoint}")
 	@Value("${oss.endpoint}")
 	private String endpoint;
 	private String endpoint;
 	@Value("${oss.accessKeyId}")
 	@Value("${oss.accessKeyId}")
 	private String accessKeyId;
 	private String accessKeyId;
 	@Value("${oss.accessKeySecret}")
 	@Value("${oss.accessKeySecret}")
 	private String accessKeySecret;
 	private String accessKeySecret;
-	@Value("${oss.private.bucket}")
-	private String privateBucket;
-	@Value("${oss.public.bucket}")
-	private String publicBucket;
-	@Value("${oss.public.domain}")
-	private String publicDomain;
 	
 	
 	
 	
 	// OSS客户端
 	// OSS客户端
@@ -59,20 +58,21 @@ public class OssService {
 	 * @return
 	 * @return
 	 * @throws Exception 
 	 * @throws Exception 
 	 */
 	 */
-	public ResponseUploadVo upload(String prefix, String suffix) throws Exception {
+	public UploadResponseVo upload(String prefix, String suffix, boolean cdn) throws Exception {
+		suffix = Objects.nonNull(suffix) ? "."+suffix : "";
+		prefix = Objects.nonNull(prefix) ? prefix : "";
+		prefix = cdn ? "public/" + prefix : "private/" + prefix; // 区分公开资源和私有资源
 		prefix = debug ? "test/" + prefix : prefix; // 测试环境下添加固定前缀, 定时清理
 		prefix = debug ? "test/" + prefix : prefix; // 测试环境下添加固定前缀, 定时清理
 		PolicyConditions policyConditions = new PolicyConditions();
 		PolicyConditions policyConditions = new PolicyConditions();
 		policyConditions.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1024*1024*1024*1); // 内容长度范围1G
 		policyConditions.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1024*1024*1024*1); // 内容长度范围1G
 		policyConditions.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, prefix); // key前缀
 		policyConditions.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, prefix); // key前缀
 		String postPolicy = ossClient.generatePostPolicy(this.getExpiration(10), policyConditions); // 有效期10分钟
 		String postPolicy = ossClient.generatePostPolicy(this.getExpiration(10), policyConditions); // 有效期10分钟
-		String encodedPolicy = BinaryUtil.toBase64String(postPolicy.getBytes("utf-8"));
-		String postSignature = ossClient.calculatePostSignature(postPolicy);
-		ResponseUploadVo uploadBean = new ResponseUploadVo();
-		uploadBean.setKey(prefix + UUID.randomUUID().toString().replace("-", "") + "." + suffix);
+		UploadResponseVo uploadBean = cdn ? new UploadCdnResponseVo() : new UploadResponseVo();
+		uploadBean.setKey(prefix + UUID.randomUUID().toString().replace("-", "") + suffix);
+		uploadBean.setPolicy(BinaryUtil.toBase64String(postPolicy.getBytes("utf-8")));
+		uploadBean.setSignature(ossClient.calculatePostSignature(postPolicy));
 		uploadBean.setAccessid(accessKeyId);
 		uploadBean.setAccessid(accessKeyId);
-		uploadBean.setPolicy(encodedPolicy);
-		uploadBean.setSignature(postSignature);
-		uploadBean.setDomain(publicDomain);
+		uploadBean.setUrl(url);
 		return uploadBean;
 		return uploadBean;
 	}
 	}
 	
 	
@@ -86,7 +86,7 @@ public class OssService {
 		if(Objects.isNull(key) || key.trim().isEmpty()) {
 		if(Objects.isNull(key) || key.trim().isEmpty()) {
 			return null;
 			return null;
 		}
 		}
-		URL url = ossClient.generatePresignedUrl(publicBucket, key, this.getExpiration(30)); // 授权有效期30分钟
+		URL url = ossClient.generatePresignedUrl(bucket, key, this.getExpiration(30)); // 授权有效期30分钟
 		String result = url.toString();
 		String result = url.toString();
 		logger.info("oss下载返回: {}", result);
 		logger.info("oss下载返回: {}", result);
 		return result;
 		return result;

+ 1 - 1
src/main/java/com/llisoft/service/file/vo/RequestDownloadVo.java → src/main/java/com/llisoft/service/file/vo/DownloadRequestVo.java

@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 @ApiModel("下载请求实体")
 @ApiModel("下载请求实体")
-public class RequestDownloadVo {
+public class DownloadRequestVo {
 	
 	
 	@ApiModelProperty("KEY")
 	@ApiModelProperty("KEY")
 	@NotBlank(message="KEY不能为空")
 	@NotBlank(message="KEY不能为空")

+ 1 - 1
src/main/java/com/llisoft/service/file/vo/ResponseDownloadVo.java → src/main/java/com/llisoft/service/file/vo/DownloadResponseVo.java

@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 @ApiModel("下载返回实体")
 @ApiModel("下载返回实体")
-public class ResponseDownloadVo {
+public class DownloadResponseVo {
 	
 	
 	@ApiModelProperty("URL")
 	@ApiModelProperty("URL")
 	private String url;
 	private String url;

+ 35 - 0
src/main/java/com/llisoft/service/file/vo/UploadCdnResponseVo.java

@@ -0,0 +1,35 @@
+package com.llisoft.service.file.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+@ApiModel("上传返回实体CDN")
+public class UploadCdnResponseVo extends UploadResponseVo{
+	
+	@ApiModelProperty("宽度200缩略图")
+	private String w200 = "!w200";
+	@ApiModelProperty("宽度缩400略图")
+	private String w400 = "!w400";
+	@ApiModelProperty("宽度800缩略图")
+	private String w800 = "!w800";
+	
+	public String getW200() {
+		return w200;
+	}
+	public void setW200(String w200) {
+		this.w200 = w200;
+	}
+	public String getW400() {
+		return w400;
+	}
+	public void setW400(String w400) {
+		this.w400 = w400;
+	}
+	public String getW800() {
+		return w800;
+	}
+	public void setW800(String w800) {
+		this.w800 = w800;
+	}
+	
+}

+ 9 - 1
src/main/java/com/llisoft/service/file/vo/RequestUploadVo.java → src/main/java/com/llisoft/service/file/vo/UploadRequestVo.java

@@ -4,12 +4,14 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 @ApiModel("上传请求实体")
 @ApiModel("上传请求实体")
-public class RequestUploadVo {
+public class UploadRequestVo {
 	
 	
 	@ApiModelProperty("前缀")
 	@ApiModelProperty("前缀")
 	private String prefix;
 	private String prefix;
 	@ApiModelProperty("后缀")
 	@ApiModelProperty("后缀")
 	private String suffix;
 	private String suffix;
+	@ApiModelProperty("CDN")
+	private boolean cdn;
 	
 	
 	public String getPrefix() {
 	public String getPrefix() {
 		return prefix;
 		return prefix;
@@ -23,5 +25,11 @@ public class RequestUploadVo {
 	public void setSuffix(String suffix) {
 	public void setSuffix(String suffix) {
 		this.suffix = suffix;
 		this.suffix = suffix;
 	}
 	}
+	public boolean isCdn() {
+		return cdn;
+	}
+	public void setCdn(boolean cdn) {
+		this.cdn = cdn;
+	}
 	
 	
 }
 }

+ 8 - 7
src/main/java/com/llisoft/service/file/vo/ResponseUploadVo.java → src/main/java/com/llisoft/service/file/vo/UploadResponseVo.java

@@ -4,8 +4,10 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 @ApiModel("上传返回实体")
 @ApiModel("上传返回实体")
-public class ResponseUploadVo {
+public class UploadResponseVo {
 	
 	
+	@ApiModelProperty("地址")
+	private String url;
 	@ApiModelProperty("ID")
 	@ApiModelProperty("ID")
 	private String accessid;
 	private String accessid;
 	@ApiModelProperty("凭证")
 	@ApiModelProperty("凭证")
@@ -14,8 +16,6 @@ public class ResponseUploadVo {
 	private String signature;
 	private String signature;
 	@ApiModelProperty("KEY")
 	@ApiModelProperty("KEY")
 	private String key;
 	private String key;
-	@ApiModelProperty("域名")
-	private String domain;
 	
 	
 	public String getAccessid() {
 	public String getAccessid() {
 		return accessid;
 		return accessid;
@@ -41,11 +41,12 @@ public class ResponseUploadVo {
 	public void setKey(String key) {
 	public void setKey(String key) {
 		this.key = key;
 		this.key = key;
 	}
 	}
-	public String getDomain() {
-		return domain;
+	public String getUrl() {
+		return url;
 	}
 	}
-	public void setDomain(String domain) {
-		this.domain = domain;
+	public void setUrl(String url) {
+		this.url = url;
 	}
 	}
+
 	
 	
 }
 }

+ 4 - 5
src/main/resources/application.yml

@@ -8,12 +8,11 @@ mta:
   
   
 ##oss配置
 ##oss配置
 oss: 
 oss: 
+  url: http://yangjie-test.oss-cn-beijing.aliyuncs.com
+  bucket: yangjie-test
   endpoint: http://oss-cn-beijing.aliyuncs.com
   endpoint: http://oss-cn-beijing.aliyuncs.com
-  accessKeyId: LTAIU5bgB80NSjhq
-  accessKeySecret: I7X0zGCEpMvxhn0MLKkGQ0VPbeY1OP
-  private.bucket: mta-test
-  public.bucket: mta-test
-  public.domain: http://mta-test.oss-cn-beijing.aliyuncs.com
+  accessKeyId: LTAIbMS7HApX1Vz7
+  accessKeySecret: f1ro3QyunFsyElXfjCAJWtPozdCjNu
     
     
 
 
 ##spring配置
 ##spring配置

+ 1 - 1
src/test/java/com/llisoft/service/file/ServiceTest.java

@@ -19,7 +19,7 @@ public class ServiceTest {
 	@Test
 	@Test
 	public void test() throws Exception{
 	public void test() throws Exception{
 		long begin = System.currentTimeMillis();
 		long begin = System.currentTimeMillis();
-		System.out.println(JsonUtil.toJson(ossService.upload("", "")));
+		System.out.println(JsonUtil.toJson(ossService.upload("", "", true)));
 		System.out.println("耗时:"+ (System.currentTimeMillis() - begin));
 		System.out.println("耗时:"+ (System.currentTimeMillis() - begin));
 	}
 	}