diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java b/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java index 82c18f5b4..5acb556b7 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java @@ -13,6 +13,7 @@ import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import com.iformall.common.ResultData; import com.iformall.config.AwsProperty; +import com.iformall.utils.AwsClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; @@ -104,49 +105,10 @@ public class UploadController extends BaseController { } */ - /** - * 上传文件 - * - * @param multiReq - * @return - * @throws Exception - */ - @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") - @ApiOperation("上传文件") - public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { - logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); + private ResultData awsUpload(MultipartFile multiReq, ObjectMetadata metadata, String fileName) { ResultData data = new ResultData(); - - - ObjectMetadata metadata = new ObjectMetadata(); - metadata.setContentType(multiReq.getContentType()); - metadata.setContentLength(multiReq.getSize()); - - FileOutputStream fos = null; - BufferedInputStream fs = null; try { - AmazonS3 s3 = AmazonS3ClientBuilder.standard() - .withRegion(awsProperty.getClientRegion()) - .withCredentials(new AWSCredentialsProvider() { - @Override - public AWSCredentials getCredentials() { - return new BasicAWSCredentials(awsProperty.getAccess(), awsProperty.getSecret()); - } - - @Override - public void refresh() { - - } - }) - .build(); - String fileName = UUID.randomUUID().toString(); - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - if (dot >= 0) { - fileName = getTenantId() + "/" + fileName + multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } else { - fileName = getTenantId() + "/" + fileName; - } - + AmazonS3 s3 = AwsClient.getInstance(); s3.putObject( new PutObjectRequest(awsProperty.getBucketName(), fileName, multiReq.getInputStream(), metadata) @@ -158,7 +120,6 @@ public class UploadController extends BaseController { Map map = new HashMap<>(); map.put("url", url.toString()); data.data = map; - return data; } catch (AmazonServiceException ase) { data.code = ResultData.ERROR; logger.warn("Caught an AmazonServiceException, which " + @@ -187,5 +148,66 @@ public class UploadController extends BaseController { return data; } + /** + * 上传文件 + * + * @param multiReq + * @return + * @throws Exception + */ + @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") + @ApiOperation("上传文件") + public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { + logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); + + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentType(multiReq.getContentType()); + metadata.setContentLength(multiReq.getSize()); + + FileOutputStream fos = null; + BufferedInputStream fs = null; + + String fileName = UUID.randomUUID().toString(); + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + if (dot >= 0) { + fileName = getTenantId() + "/" + fileName + multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } else { + fileName = getTenantId() + "/" + fileName; + } + + ResultData data = awsUpload(multiReq, metadata, fileName); + return data; + } + + /** + * C端上传图片文件 + * + * @param multiReq + * @return + * @throws Exception + */ + @PostMapping(value = "/cimgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") + @ApiOperation("C端上传图片文件") + public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) { + logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); + + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentType(multiReq.getContentType()); + metadata.setContentLength(multiReq.getSize()); + + FileOutputStream fos = null; + BufferedInputStream fs = null; + + String fileName = ""; + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + if (dot >= 0) { + fileName = "cimg/" + multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } else { + fileName = "cimg/" + UUID.randomUUID().toString(); + } + + ResultData data = awsUpload(multiReq, metadata, fileName); + return data; + } } diff --git a/mallinkAdmin/src/main/java/com/iformall/ueditor/upload/Uploader.java b/mallinkAdmin/src/main/java/com/iformall/ueditor/upload/Uploader.java index 6094f658d..363134c50 100644 --- a/mallinkAdmin/src/main/java/com/iformall/ueditor/upload/Uploader.java +++ b/mallinkAdmin/src/main/java/com/iformall/ueditor/upload/Uploader.java @@ -15,6 +15,7 @@ import com.amazonaws.services.s3.model.PutObjectRequest; import com.iformall.shiro.UserSession; import com.iformall.ueditor.define.BaseState; import com.iformall.ueditor.define.State; +import com.iformall.utils.AwsClient; import org.apache.shiro.SecurityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,10 +34,25 @@ public class Uploader { private HttpServletRequest request = null; private Map conf = null; + private AmazonS3 s3 = null; public Uploader(HttpServletRequest request, Map conf) { this.request = request; this.conf = conf; + this.s3 = AmazonS3ClientBuilder.standard() + .withRegion(conf.get("clientRegion").toString()) + .withCredentials(new AWSCredentialsProvider() { + @Override + public AWSCredentials getCredentials() { + return new BasicAWSCredentials(conf.get("access").toString(), conf.get("secret").toString()); + } + + @Override + public void refresh() { + + } + }) + .build(); } public final State doExec() { @@ -69,20 +85,6 @@ public class Uploader { metadata.setContentLength(multiReq.getSize()); try { - AmazonS3 s3 = AmazonS3ClientBuilder.standard() - .withRegion(conf.get("clientRegion").toString()) - .withCredentials(new AWSCredentialsProvider() { - @Override - public AWSCredentials getCredentials() { - return new BasicAWSCredentials(conf.get("access").toString(), conf.get("secret").toString()); - } - - @Override - public void refresh() { - - } - }) - .build(); s3.putObject( new PutObjectRequest(conf.get("bucketName").toString(), fileName, multiReq.getInputStream(), metadata) .withCannedAcl(CannedAccessControlList.PublicRead)); diff --git a/mallinkAdmin/src/main/java/com/iformall/utils/AwsClient.java b/mallinkAdmin/src/main/java/com/iformall/utils/AwsClient.java new file mode 100644 index 000000000..7ca271e8e --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/utils/AwsClient.java @@ -0,0 +1,41 @@ +package com.iformall.utils; + +import com.amazonaws.auth.AWSCredentials; +import com.amazonaws.auth.AWSCredentialsProvider; +import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.iformall.config.AwsProperty; +import org.springframework.beans.factory.annotation.Autowired; + +public class AwsClient { + + @Autowired + private static AwsProperty awsProperty; + + private static AmazonS3 s3 = null; + + private AwsClient() { + + } + + public static AmazonS3 getInstance() { + if(s3 == null) { + s3 = AmazonS3ClientBuilder.standard() + .withRegion(awsProperty.getClientRegion()) + .withCredentials(new AWSCredentialsProvider() { + @Override + public AWSCredentials getCredentials() { + return new BasicAWSCredentials(awsProperty.getAccess(), awsProperty.getSecret()); + } + + @Override + public void refresh() { + + } + }) + .build(); + } + return s3; + } +}