From d1f669e58e9f0c8081a687adca04312102cad2ea Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 7 Jan 2021 18:59:34 +0800 Subject: [PATCH] cuser --- .../controller/sys/UploadController.java | 129 ++++++----- .../iformall/controller/UploadController.java | 206 +++++++++++------- .../iformall/controller/UploadController.java | 161 ++++++++++---- .../controller/sys/UploadController.java | 199 +++++++++-------- 4 files changed, 429 insertions(+), 266 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java index 25c00c22b..f3d91fadb 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java @@ -1,7 +1,6 @@ package com.iformall.controller.sys; import com.iformall.annotation.SystemControllerLog; -import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; @@ -19,7 +18,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; -import java.io.*; import java.util.*; import java.util.List; @@ -30,8 +28,6 @@ public class UploadController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private String fmUploadDir; @Autowired private AliyunOSS aliyunOSS; @@ -45,19 +41,25 @@ public class UploadController extends BaseController { @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("上传文件") @SystemControllerLog(description = "文件上传") - public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) throws Exception { + public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); TenantEntity tenantEntity = getTenantInfo(); - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } - ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); - return data; + ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); + return data; + + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } } @@ -83,12 +85,12 @@ public class UploadController extends BaseController { } String fileFormat = ""; - - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + String imgFormat = ImgUtil.getImgFormat(fileFormat); if(StringUtils.isNotBlank(imgFormat)) { long maxSize = 0l; @@ -116,9 +118,6 @@ public class UploadController extends BaseController { ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); return data; - } catch (NumberFormatException ne) { - logger.error(ne.getMessage()); - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); } catch (Exception e) { logger.error(e.getMessage()); return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); @@ -135,65 +134,75 @@ public class UploadController extends BaseController { @PostMapping(value = "/awsFilesUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("多文件上传") @SystemControllerLog(description = "多文件上传") - public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) throws Exception{ + public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) { logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); TenantEntity tenantEntity = getTenantInfo(); + try { + if(files.length > 0){ + ResultData data = new ResultData(); + List> dataList = new ArrayList>(); + for(MultipartFile multipartFile: files) { + Map map = new HashMap<>(); + + map.put("key", multipartFile.getOriginalFilename()); + + int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());; + } - if(files.length > 0){ - ResultData data = new ResultData(); - List> dataList = new ArrayList>(); - for(MultipartFile multipartFile: files) { - Map map = new HashMap<>(); - - map.put("key", multipartFile.getOriginalFilename()); - - int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());; + ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); + + if(data1.code == ResultData.SUCCESS) { + Map _data = (Map)data1.data; + map.put("url", (String) _data.get("url")); + dataList.add(map); + } else { + // 部分成功 + data.code = ResultData.SUCCESS; + data.data = dataList; + return data; + } } + data.code = ResultData.SUCCESS; + data.data = dataList; + return data; - ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); - - if(data1.code == ResultData.SUCCESS) { - Map _data = (Map)data1.data; - map.put("url", (String) _data.get("url")); - dataList.add(map); - } else { - // 部分成功 - data.code = ResultData.SUCCESS; - data.data = dataList; - return data; - } + }else{ + return new ResultData(); } - data.code = ResultData.SUCCESS; - data.data = dataList; - return data; - + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } - return new ResultData(); } /** - * 内部接口-C端上传图片文件 + * 内部接口-A端上传图片文件 * * @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) throws Exception{ + @ApiOperation("内部接口-A端上传图片文件") + public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) { logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } - ResultData data = aliyunOSS.uploadFile("cimg", fileFormat, multiReq.getInputStream()); - return data; + ResultData data = aliyunOSS.uploadFile("aimg", fileFormat, multiReq.getInputStream()); + return data; + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } } } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/UploadController.java b/mallinkBApi/src/main/java/com/iformall/controller/UploadController.java index 9f745fae6..17b9706df 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/UploadController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/UploadController.java @@ -1,6 +1,6 @@ package com.iformall.controller; - +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.base.TenantEntity; import com.iformall.file.aliyun.AliyunOSS; @@ -11,13 +11,11 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.io.*; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; import java.util.*; import java.util.List; @@ -28,36 +26,40 @@ public class UploadController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private String fmUploadDir; - @Autowired private AliyunOSS aliyunOSS; /** * 上传文件 * - * @param + * @param multiReq * @return * @throws Exception */ - @PostMapping(value = "/awsFileUpload") + @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("上传文件") - public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) throws Exception { + public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); TenantEntity tenantEntity = getTenantInfo(); - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + + ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); + return data; - ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); - return data; + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } } + /** * 图片上传 * @@ -67,47 +69,54 @@ public class UploadController extends BaseController { */ @PostMapping(value = "/awsImgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("上传图片") - public ResultData awsImgUpload(@RequestParam("file") MultipartFile multiReq) throws Exception { + public ResultData awsImgUpload(@RequestParam("file") MultipartFile multiReq + ,@RequestParam Map param) { logger.info("[" + getIpAddr() + "] UploadController::awsImgUpload"); - TenantEntity tenantEntity = getTenantInfo(); - String tempFileName = UUID.randomUUID().toString(); - String fileFormat = ""; - - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + long size = multiReq.getSize(); + final long length = 2097152; + if (size > length) { + return new ResultData(ErrorCode.PICTURE_SIZE_EXCEED); } - FileOutputStream fos = null; - - String imgFormat = ImgUtil.getImgFormat(fileFormat); - if(StringUtils.isNotBlank(imgFormat)) { - String localImgFileName = fmUploadDir + tempFileName + "-1" + fileFormat; - String localNewImgFileName = fmUploadDir + tempFileName + fileFormat; - BufferedInputStream fs = null; - File localFile = new File(localImgFileName); - fos = new FileOutputStream(localFile); - fs = (BufferedInputStream) multiReq.getInputStream(); - byte[] buffer = new byte[1024]; - int len = 0; - while ((len = fs.read(buffer)) != -1) { - fos.write(buffer, 0, len); + String fileFormat = ""; + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + + String imgFormat = ImgUtil.getImgFormat(fileFormat); + if(StringUtils.isNotBlank(imgFormat)) { + long maxSize = 0l; + try { + maxSize = Long.parseLong(param.get("size")); + } catch (NumberFormatException e) {} + if(maxSize > 0l && size > maxSize*1024){ + return new ResultData(ErrorCode.PICTURE_SIZE_CUSTOMIZE); + } + BufferedImage bufferedImage = ImageIO.read(multiReq.getInputStream()); + if(bufferedImage != null){ + int width = 0;int hight = 0; + try { + width = Integer.parseInt(param.get("width")); + hight = Integer.parseInt(param.get("hight")); + } catch (NumberFormatException e) {} + Integer relWidth = bufferedImage.getWidth(); + Integer relHeight = bufferedImage.getHeight(); + if((width > 0 && width != relWidth.intValue()) + || (hight > 0 && hight != relHeight.intValue())){ + return new ResultData(ErrorCode.PICTURE_W_H_CUSTOMIZE); + } + } } - fos.close(); - fs.close(); - - File newFile = ImgUtil.thinImage(localImgFileName, localNewImgFileName, imgFormat); - // 删除本地缓存 - localFile.delete(); - ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, new FileInputStream(newFile)); - // 删除本地缓存 - newFile.delete(); - return data; - } else { ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); return data; + + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } } @@ -120,42 +129,75 @@ public class UploadController extends BaseController { */ @PostMapping(value = "/awsFilesUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("多文件上传") - public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) throws Exception { + public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) { logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); - TenantEntity tenantEntity = getTenantInfo(); - - if (files.length > 0) { - ResultData data = new ResultData(); - List> dataList = new ArrayList>(); - for (MultipartFile multipartFile : files) { - Map map = new HashMap<>(); - - map.put("key", multipartFile.getOriginalFilename()); - - int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); + try { + if(files.length > 0){ + ResultData data = new ResultData(); + List> dataList = new ArrayList>(); + for(MultipartFile multipartFile: files) { + Map map = new HashMap<>(); + + map.put("key", multipartFile.getOriginalFilename()); + + int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());; + } + + ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); + + if(data1.code == ResultData.SUCCESS) { + Map _data = (Map)data1.data; + map.put("url", (String) _data.get("url")); + dataList.add(map); + } else { + // 部分成功 + data.code = ResultData.SUCCESS; + data.data = dataList; + return data; + } } + data.code = ResultData.SUCCESS; + data.data = dataList; + return data; - ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); - if (data1.code == ResultData.SUCCESS) { - Map _data = (Map) data1.data; - map.put("url", (String) _data.get("url")); - dataList.add(map); - } else { - // 部分成功 - data.code = ResultData.SUCCESS; - data.data = dataList; - return data; - } + }else{ + return new ResultData(); } - data.code = ResultData.SUCCESS; - data.data = dataList; - return data; + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } + } + /** + * 内部接口-B端上传图片文件 + * + * @param multiReq + * @return + * @throws Exception + */ + @PostMapping(value = "/cimgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") + @ApiOperation("内部接口-B端上传图片文件") + public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) { + logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); + + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + + ResultData data = aliyunOSS.uploadFile("bimg", fileFormat, multiReq.getInputStream()); + return data; + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } - return new ResultData(); } + } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/UploadController.java b/mallinkCApi/src/main/java/com/iformall/controller/UploadController.java index 633396d33..26499de18 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/UploadController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/UploadController.java @@ -4,19 +4,20 @@ import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.base.TenantEntity; import com.iformall.file.aliyun.AliyunOSS; +import com.iformall.utils.ImgUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; import java.util.*; +import java.util.List; @RestController @RequestMapping(value = "/api/upload") @@ -28,7 +29,6 @@ public class UploadController extends BaseController { @Autowired private AliyunOSS aliyunOSS; - /** * 上传文件 * @@ -43,20 +43,81 @@ public class UploadController extends BaseController { TenantEntity tenantEntity = getTenantInfo(); - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + + ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); + return data; + + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } + } + + /** + * 图片上传 + * + * @param multiReq + * @return + * @throws Exception + */ + @PostMapping(value = "/awsImgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") + @ApiOperation("上传图片") + public ResultData awsImgUpload(@RequestParam("file") MultipartFile multiReq + ,@RequestParam Map param) { + logger.info("[" + getIpAddr() + "] UploadController::awsImgUpload"); + TenantEntity tenantEntity = getTenantInfo(); + + long size = multiReq.getSize(); + final long length = 2097152; + if (size > length) { + return new ResultData(ErrorCode.PICTURE_SIZE_EXCEED); + } + + String fileFormat = ""; try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } + + String imgFormat = ImgUtil.getImgFormat(fileFormat); + if(StringUtils.isNotBlank(imgFormat)) { + long maxSize = 0l; + try { + maxSize = Long.parseLong(param.get("size")); + } catch (NumberFormatException e) {} + if(maxSize > 0l && size > maxSize*1024){ + return new ResultData(ErrorCode.PICTURE_SIZE_CUSTOMIZE); + } + BufferedImage bufferedImage = ImageIO.read(multiReq.getInputStream()); + if(bufferedImage != null){ + int width = 0;int hight = 0; + try { + width = Integer.parseInt(param.get("width")); + hight = Integer.parseInt(param.get("hight")); + } catch (NumberFormatException e) {} + Integer relWidth = bufferedImage.getWidth(); + Integer relHeight = bufferedImage.getHeight(); + if((width > 0 && width != relWidth.intValue()) + || (hight > 0 && hight != relHeight.intValue())){ + return new ResultData(ErrorCode.PICTURE_W_H_CUSTOMIZE); + } + } + } ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); return data; - } catch (IOException e) { + + } catch (Exception e) { logger.error(e.getMessage()); return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } - } /** @@ -70,27 +131,26 @@ public class UploadController extends BaseController { @ApiOperation("多文件上传") public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) { logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); - TenantEntity tenantEntity = getTenantInfo(); + try { + if(files.length > 0){ + ResultData data = new ResultData(); + List> dataList = new ArrayList>(); + for(MultipartFile multipartFile: files) { + Map map = new HashMap<>(); + + map.put("key", multipartFile.getOriginalFilename()); + + int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());; + } - if (files.length > 0) { - ResultData data = new ResultData(); - List> dataList = new ArrayList>(); - for (MultipartFile multipartFile : files) { - Map map = new HashMap<>(); - - map.put("key", multipartFile.getOriginalFilename()); - - int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); - } - - try { ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); - if (data1.code == ResultData.SUCCESS) { - Map _data = (Map) data1.data; + + if(data1.code == ResultData.SUCCESS) { + Map _data = (Map)data1.data; map.put("url", (String) _data.get("url")); dataList.add(map); } else { @@ -99,18 +159,45 @@ public class UploadController extends BaseController { data.data = dataList; return data; } - } catch (IOException e) { - logger.error(e.getMessage()); - return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } + data.code = ResultData.SUCCESS; + data.data = dataList; + return data; + }else{ + return new ResultData(); + } + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } + } + + /** + * 内部接口-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"); + + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); } - data.code = ResultData.SUCCESS; - data.data = dataList; - return data; + ResultData data = aliyunOSS.uploadFile("cimg", fileFormat, multiReq.getInputStream()); + return data; + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } - return new ResultData(); } } diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/UploadController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/UploadController.java index 52f1dfe56..2de6e89c4 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/UploadController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/UploadController.java @@ -1,6 +1,7 @@ package com.iformall.controller.sys; - +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.base.TenantEntity; @@ -15,7 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.io.*; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; import java.util.*; import java.util.List; @@ -26,13 +28,9 @@ public class UploadController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private String fmUploadDir; - @Autowired private AliyunOSS aliyunOSS; - /** * 上传文件 * @@ -42,21 +40,29 @@ public class UploadController extends BaseController { */ @PostMapping(value = "/awsFileUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("上传文件") - public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) throws Exception { + @SystemControllerLog(description = "文件上传") + public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); TenantEntity tenantEntity = getTenantInfo(); - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } - ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); - return data; + ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); + return data; + + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } } + /** * 图片上传 * @@ -66,46 +72,55 @@ public class UploadController extends BaseController { */ @PostMapping(value = "/awsImgUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("上传图片") - public ResultData awsImgUpload(@RequestParam("file") MultipartFile multiReq) throws Exception{ + @SystemControllerLog(description = "上传图片") + public ResultData awsImgUpload(@RequestParam("file") MultipartFile multiReq + ,@RequestParam Map param) { logger.info("[" + getIpAddr() + "] UploadController::awsImgUpload"); - TenantEntity tenantEntity = getTenantInfo(); - String tempFileName = UUID.randomUUID().toString(); - String fileFormat = ""; - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + long size = multiReq.getSize(); + final long length = 2097152; + if (size > length) { + return new ResultData(ErrorCode.PICTURE_SIZE_EXCEED); } - FileOutputStream fos = null; - String imgFormat = ImgUtil.getImgFormat(fileFormat); - if(StringUtils.isNotBlank(imgFormat)) { - String localImgFileName = fmUploadDir + tempFileName + "-1" + fileFormat; - String localNewImgFileName = fmUploadDir + tempFileName + fileFormat; - BufferedInputStream fs = null; - File localFile = new File(localImgFileName); - fos = new FileOutputStream(localFile); - fs = (BufferedInputStream) multiReq.getInputStream(); - byte[] buffer = new byte[1024]; - int len = 0; - while ((len = fs.read(buffer)) != -1) { - fos.write(buffer, 0, len); + String fileFormat = ""; + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); } - fos.close(); - fs.close(); - File newFile = ImgUtil.thinImage(localImgFileName, localNewImgFileName, imgFormat); - // 删除本地缓存 - localFile.delete(); - - ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, new FileInputStream(newFile)); - // 删除本地缓存 - newFile.delete(); - return data; - } else { + String imgFormat = ImgUtil.getImgFormat(fileFormat); + if(StringUtils.isNotBlank(imgFormat)) { + long maxSize = 0l; + try { + maxSize = Long.parseLong(param.get("size")); + } catch (NumberFormatException e) {} + if(maxSize > 0l && size > maxSize*1024){ + return new ResultData(ErrorCode.PICTURE_SIZE_CUSTOMIZE); + } + BufferedImage bufferedImage = ImageIO.read(multiReq.getInputStream()); + if(bufferedImage != null){ + int width = 0;int hight = 0; + try { + width = Integer.parseInt(param.get("width")); + hight = Integer.parseInt(param.get("hight")); + } catch (NumberFormatException e) {} + Integer relWidth = bufferedImage.getWidth(); + Integer relHeight = bufferedImage.getHeight(); + if((width > 0 && width != relWidth.intValue()) + || (hight > 0 && hight != relHeight.intValue())){ + return new ResultData(ErrorCode.PICTURE_W_H_CUSTOMIZE); + } + } + } ResultData data = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multiReq.getInputStream()); return data; + + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } } @@ -118,66 +133,76 @@ public class UploadController extends BaseController { */ @PostMapping(value = "/awsFilesUpload", consumes = "multipart/*", headers = "content-type=multipart/form-data") @ApiOperation("多文件上传") - public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) throws Exception { + @SystemControllerLog(description = "多文件上传") + public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) { logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); - TenantEntity tenantEntity = getTenantInfo(); - - if(files.length > 0){ - ResultData data = new ResultData(); - List> dataList = new ArrayList>(); - for(MultipartFile multipartFile: files) { - Map map = new HashMap<>(); - - map.put("key", multipartFile.getOriginalFilename()); - - int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length()); + try { + if(files.length > 0){ + ResultData data = new ResultData(); + List> dataList = new ArrayList>(); + for(MultipartFile multipartFile: files) { + Map map = new HashMap<>(); + + map.put("key", multipartFile.getOriginalFilename()); + + int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());; + } + + ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); + + if(data1.code == ResultData.SUCCESS) { + Map _data = (Map)data1.data; + map.put("url", (String) _data.get("url")); + dataList.add(map); + } else { + // 部分成功 + data.code = ResultData.SUCCESS; + data.data = dataList; + return data; + } } + data.code = ResultData.SUCCESS; + data.data = dataList; + return data; - ResultData data1 = aliyunOSS.uploadFile(tenantEntity.getTenantId(), fileFormat, multipartFile.getInputStream()); - if(data1.code == ResultData.SUCCESS) { - Map _data = (Map)data1.data; - map.put("url", (String) _data.get("url")); - dataList.add(map); - } else { - // 部分成功 - data.code = ResultData.SUCCESS; - data.data = dataList; - return data; - } + }else{ + return new ResultData(); } - data.code = ResultData.SUCCESS; - data.data = dataList; - return data; - + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); } - return new ResultData(); } /** - * C端上传图片文件 + * 内部接口-sys端上传图片文件 * * @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) throws Exception { + @ApiOperation("内部接口-sys端上传图片文件") + public ResultData cimgUpload(@RequestParam("file") MultipartFile multiReq) { logger.info("[" + getIpAddr() + "] UploadController::cimgUpload"); - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - String fileFormat = ""; - if (dot >= 0) { - fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } + try { + int dot = multiReq.getOriginalFilename().lastIndexOf('.'); + String fileFormat = ""; + if (dot >= 0) { + fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); + } - ResultData data = aliyunOSS.uploadFile("cimg", fileFormat, multiReq.getInputStream()); - return data; + ResultData data = aliyunOSS.uploadFile("sysimg", fileFormat, multiReq.getInputStream()); + return data; + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR); + } } - }