From 7231778bbb9ab7929c3edb77939044690cd37a92 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Wed, 22 Oct 2025 14:09:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/CommonUploadController.java | 16 ++++- .../service/common/CommonUploadService.java | 70 ++++++++++++++++++- .../src/main/resources/application-dev.yml | 4 +- .../bonus/file/service/FileUploadService.java | 4 +- .../com/bonus/ocr/service/OcrService.java | 3 +- 5 files changed, 87 insertions(+), 10 deletions(-) diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/common/CommonUploadController.java b/bonus-admin/src/main/java/com/bonus/web/controller/common/CommonUploadController.java index 3beee2d..7363836 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/common/CommonUploadController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/common/CommonUploadController.java @@ -29,13 +29,25 @@ public class CommonUploadController { @ApiOperation(value = "上传小文件---5M以内", notes = "上传文件无需OCR识别") @PostMapping(value = "uploadSmallFile") - private AjaxResult uploadSmallFile(@RequestParam(name = "file",required = true) MultipartFile file,@RequestParam(name = "params",required = true)String params) throws Exception { + private AjaxResult uploadSmallFile(@RequestParam(name = "file",required = false) MultipartFile file,@RequestParam(name = "params",required = false)String params) throws Exception { return service.uploadSmallFile(file,params); } + @ApiOperation(value = "上传大文件---5M以上", notes = "上传文件无需OCR识别") + @PostMapping(value = "uploadLargeFile") + private AjaxResult uploadLargeFile(@RequestParam(name = "file",required = false) MultipartFile file,@RequestParam(name = "params",required = false)String params) throws Exception { + return service.uploadLargeFile(file,params); + } + @ApiOperation(value = "上传小文件---5M以内", notes = "上传文件并使用OCR识别") @PostMapping(value = "uploadSmallFileByOcr") - private AjaxResult uploadSmallFileByOcr(@RequestParam(name = "file",required = false) MultipartFile file,String params){ + private AjaxResult uploadSmallFileByOcr(@RequestParam(name = "file",required = false) MultipartFile file,@RequestParam(name = "params",required = false)String params){ return service.uploadSmallFileByOcr(file,params); } + + @ApiOperation(value = "上传大文件---5M以上", notes = "上传文件并使用OCR识别") + @PostMapping(value = "uploadLargeFileByOcr") + private AjaxResult uploadLargeFileByOcr(@RequestParam(name = "file",required = false) MultipartFile file,@RequestParam(name = "params",required = false)String params){ + return service.uploadLargeFileByOcr(file,params); + } } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/common/CommonUploadService.java b/bonus-admin/src/main/java/com/bonus/web/service/common/CommonUploadService.java index 61e7f8c..13d9c7d 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/common/CommonUploadService.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/common/CommonUploadService.java @@ -20,6 +20,7 @@ import javax.annotation.Resource; import java.io.File; import java.util.HashMap; import java.util.Map; +import java.util.Objects; /** * @className:CommonUploadService @@ -53,6 +54,31 @@ public class CommonUploadService { * @date 2025/10/17 16:42 */ public AjaxResult uploadSmallFile(MultipartFile file, String params) { + return commonUploadFile(file,params,"small"); + } + + /** + * 上传大文件---5M以上 --- 上传文件无需OCR识别 + * @param file + * @param params + * @return AjaxResult + * @author cwchen + * @date 2025/10/17 16:42 + */ + public AjaxResult uploadLargeFile(MultipartFile file, String params) { + return commonUploadFile(file,params,"large"); + } + + /** + * 上传文件 + * @param file + * @param params + * @param uploadSize + * @return AjaxResult + * @author cwchen + * @date 2025/10/22 14:06 + */ + public AjaxResult commonUploadFile(MultipartFile file, String params,String uploadSize) { // params(json字符串) 参数需要传 suffix等参数 JSONObject jsonObj = JSONObject.parseObject(params); // 获取文件前缀 @@ -60,7 +86,12 @@ public class CommonUploadService { // 生成文件路径 String uploadPath = FileUtil.generateDatePath(file, suffix).replace("\\", "/"); // 上传结果 - String uploadResult = fileUploadService.uploadFile(file, uploadPath); + String uploadResult = null; + if(Objects.equals(uploadSize,"small")){ + uploadResult = fileUploadService.uploadFile(file, uploadPath); + }else if(Objects.equals(uploadSize,"large")){ + uploadResult = fileUploadService.uploadLargeFile(file, uploadPath); + } if(StringUtils.isEmpty(uploadResult)){ return AjaxResult.error(Constants.UPLOAD_ERROR); } @@ -76,16 +107,47 @@ public class CommonUploadService { * @date 2025/10/17 16:42 */ public AjaxResult uploadSmallFileByOcr(MultipartFile file, String params) { + return commonUploadFileByOcr(file, params,"small"); + } + + /** + * 上传大文件---5M以上 --- 上传文件并使用OCR识别 + * @param file + * @param params + * @return AjaxResult + * @author cwchen + * @date 2025/10/17 16:42 + */ + public AjaxResult uploadLargeFileByOcr(MultipartFile file, String params) { + return commonUploadFileByOcr(file, params,"large"); + } + + /** + * 上传文件-ocr识别 + * @param file + * @param params + * @return AjaxResult + * @author cwchen + * @date 2025/10/22 14:01 + */ + public AjaxResult commonUploadFileByOcr(MultipartFile file, String params,String uploadSize) { // params(json字符串) 参数需要传 suffix(文件保存前缀)、fields_json(ocr识别的参数["姓名","性别"])等参数 + // uploadSize: small:小文件 large:大文件 JSONObject jsonObj = JSONObject.parseObject(params); // 获取文件前缀 String suffix = UploadSuffixEnum.getValueByKey(jsonObj.getString("suffix")); // 生成文件路径 String uploadPath = FileUtil.generateDatePath(file, suffix).replace("\\", "/"); - String uploadResult = fileUploadService.uploadFile(file, uploadPath); + String uploadResult = null; + if(Objects.equals(uploadSize,"small")){ + uploadResult = fileUploadService.uploadFile(file, uploadPath); + }else if(Objects.equals(uploadSize,"large")){ + uploadResult = fileUploadService.uploadLargeFile(file, uploadPath); + } if(StringUtils.isEmpty(uploadResult)){ return AjaxResult.error(Constants.UPLOAD_ERROR); } + Map map = new HashMap<>(16); OcrResponse ocrResponse = null; try { // 获取Minio临时文件 @@ -99,10 +161,12 @@ public class CommonUploadService { ocrResponse = ocrService.callOcrService(ocrRequest); } catch (Exception e) { log.error(e.toString(),e.getMessage()); + return AjaxResult.error(Constants.UPLOAD_ERROR); } - Map map = new HashMap<>(16); map.put("uploadPath", uploadPath); map.put("ocrResult", ocrResponse); return AjaxResult.success(Constants.UPLOAD_SUCCESS,map); } + + } diff --git a/bonus-admin/src/main/resources/application-dev.yml b/bonus-admin/src/main/resources/application-dev.yml index 0412072..1475602 100644 --- a/bonus-admin/src/main/resources/application-dev.yml +++ b/bonus-admin/src/main/resources/application-dev.yml @@ -59,9 +59,9 @@ spring: servlet: multipart: # 单个文件大小 - max-file-size: 10MB + max-file-size: -1 # 设置总上传的文件大小 - max-request-size: 20MB + max-request-size: -1 # 服务模块 devtools: restart: diff --git a/bonus-file/src/main/java/com/bonus/file/service/FileUploadService.java b/bonus-file/src/main/java/com/bonus/file/service/FileUploadService.java index 2f2f7a0..3bf9c64 100644 --- a/bonus-file/src/main/java/com/bonus/file/service/FileUploadService.java +++ b/bonus-file/src/main/java/com/bonus/file/service/FileUploadService.java @@ -61,9 +61,9 @@ public class FileUploadService { * @param file * @return */ - public SysFile uploadLargeFile(MultipartFile file, String path) { + public String uploadLargeFile(MultipartFile file, String path) { try{ - return minioUtil.uploadFile(file, path); + return minioUtil.uploadFile(file, path).getName(); }catch (Exception e){ log.error(e.toString(),e); } diff --git a/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java b/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java index d9ee829..04c862b 100644 --- a/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java +++ b/bonus-ocr/src/main/java/com/bonus/ocr/service/OcrService.java @@ -115,7 +115,8 @@ public class OcrService { } catch (Exception e) { log.error("调用OCR服务失败", e); - throw new IOException("OCR服务调用失败: " + e.getMessage(), e); + return null; +// throw new IOException("OCR服务调用失败: " + e.getMessage(), e); } finally { // 清理临时文件 if (ocrRequest.getFile() != null && ocrRequest.getFile().exists()) {