diff --git a/bonus-modules/bonus-file/src/main/java/com/bonus/file/controller/FileUtilController.java b/bonus-modules/bonus-file/src/main/java/com/bonus/file/controller/FileUtilController.java index 096aaf8..c2629bf 100644 --- a/bonus-modules/bonus-file/src/main/java/com/bonus/file/controller/FileUtilController.java +++ b/bonus-modules/bonus-file/src/main/java/com/bonus/file/controller/FileUtilController.java @@ -68,7 +68,7 @@ public class FileUtilController { * @return */ @PostMapping("uploadBast64") - public R upload(@RequestBody FileVo vo) { + public R uploadBast64(@RequestBody FileVo vo) { try { if (ObjectUtil.isEmpty(vo.getSourceTable())) { return R.fail("资源表不能为空"); diff --git a/bonus-modules/bonus-file/src/main/java/com/bonus/file/service/impl/FileUtilsServiceImpl.java b/bonus-modules/bonus-file/src/main/java/com/bonus/file/service/impl/FileUtilsServiceImpl.java index 0c72f68..e910483 100644 --- a/bonus-modules/bonus-file/src/main/java/com/bonus/file/service/impl/FileUtilsServiceImpl.java +++ b/bonus-modules/bonus-file/src/main/java/com/bonus/file/service/impl/FileUtilsServiceImpl.java @@ -34,17 +34,25 @@ public class FileUtilsServiceImpl { private FileUtilMapper mapper; public UploadFileVo upload(String sourceTable, String sourceId, String sourceType,String prefix,String bast64,String bucketName) { - UploadFileVo vo=new UploadFileVo(); - String suffix; - if(bast64.contains(",")){ - String de = bast64.split(",")[1]; - byte[] decodedBytes = Base64.getDecoder().decode(de); - // 计算文件大小 - int fileSizeInBytes = decodedBytes.length; - long size = (long) Math.ceil(fileSizeInBytes / 1024.0); // 向上取整并保持long类型 - vo.setFileSize(size); - } + String suffix=null; + if(bast64.contains(",")){ + // 2. 解析Base64前缀,获取图片格式(如png、jpg) + String imgPrefix = bast64.substring(0, bast64.indexOf(";base64,")); + if (StringUtils.isEmpty(suffix)) { + suffix = imgPrefix.substring(imgPrefix.lastIndexOf("/") + 1); // 从前缀提取后缀(如png) + } + //保留纯净的bast64 + bast64 = bast64.split(",")[1]; + + } + UploadFileVo vo=new UploadFileVo(); + //计算文件大小 + byte[] decodedBytes = Base64.getDecoder().decode(bast64); + // 计算文件大小 + int fileSizeInBytes = decodedBytes.length; + long size = (long) Math.ceil(fileSizeInBytes / 1024.0); // 向上取整并保持long类型 + vo.setFileSize(size); vo.setSourceId(sourceId); vo.setSourceTable(sourceTable); vo.setSourceType(sourceType); @@ -56,10 +64,10 @@ public class FileUtilsServiceImpl { String month=DateUtils.getCurrentMonth(); String year=DateUtils.getCurrentYear(); String uuid = StringUtils.randomUUID(); - suffix=getBase64Type(bast64); - - - String fileName=uuid+".jpeg"; + if(StringUtils.isEmpty(suffix)){ + suffix=getBase64Type(bast64); + } + String fileName=uuid+"."+suffix; String filePath=prefix+"/"+year+"/"+month+"/"+day+"/"+fileName; vo.setFilePath(filePath); vo.setOriginFileName(fileName); diff --git a/bonus-modules/bonus-file/src/main/java/com/bonus/file/utils/MinioUtil.java b/bonus-modules/bonus-file/src/main/java/com/bonus/file/utils/MinioUtil.java index 5a2f44c..afa47e5 100644 --- a/bonus-modules/bonus-file/src/main/java/com/bonus/file/utils/MinioUtil.java +++ b/bonus-modules/bonus-file/src/main/java/com/bonus/file/utils/MinioUtil.java @@ -26,6 +26,8 @@ import java.util.concurrent.Executors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; +import static java.util.Base64.*; + /** * MinioUtil 工具类 * 封装 MinIO 常用操作,如文件上传、下载、删除、复制等功能 @@ -307,7 +309,7 @@ public class MinioUtil { } byte[] bytes = outputStream.toByteArray(); - String bast64= Base64.getEncoder().encodeToString(bytes); + String bast64= getEncoder().encodeToString(bytes); inputStream.close(); outputStream.close(); return bast64; @@ -357,7 +359,9 @@ public class MinioUtil { public static InputStream base64ToInputStream(String base64) { ByteArrayInputStream stream = null; try { - byte[] bytes = Base64.getEncoder().encode(base64.trim().getBytes()); + // InputStream inputStream = new ByteArrayInputStream(imgBytes) + byte[] bytes = Base64.getDecoder().decode(base64.trim().getBytes()); + // byte[] imgBytes = Base64.decodeBase64(base64); stream = new ByteArrayInputStream(bytes); } catch (Exception e) { e.printStackTrace();