diff --git a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java index 48e60d1ba..dabcef0ed 100644 --- a/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java +++ b/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java @@ -1,5 +1,6 @@ package cn.stylefeng.roses.kernel.file.modular.controller; +import cn.stylefeng.roses.kernel.file.constants.FileConstants; import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService; import cn.stylefeng.roses.kernel.file.pojo.request.SysFileInfoRequest; import cn.stylefeng.roses.kernel.file.pojo.response.SysFileInfoResponse; @@ -19,7 +20,9 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static cn.stylefeng.roses.kernel.file.constants.FileConstants.*; @@ -59,6 +62,25 @@ public class SysFileInfoController { return new SuccessResponseData(fileUploadInfoResult); } + + /** + * 富文本tinymce上传文件 + * 需要返回格式 + * //json格式 + * { "location": "folder/sub-folder/new-location.png" } + * + * @author liuhanqing + * @date 2021/1/17 11:17 + */ + @PostResource(name = "上传文件", path = "/sysFileInfo/tinymceUpload") + public Map tinymceUpload(@RequestPart("file") MultipartFile file, SysFileInfoRequest sysFileInfoRequest) { + Map resultMap = new HashMap<>(1); + sysFileInfoRequest.setSecretFlag(YesOrNotEnum.N.getCode()); + SysFileInfoResponse fileUploadInfoResult = this.sysFileInfoService.uploadFile(file, sysFileInfoRequest); + resultMap.put("location", FileConstants.FILE_PUBLIC_PREVIEW_URL + "?fileId=" + fileUploadInfoResult.getFileId()); + return resultMap; + } + /** * 私有文件预览 * diff --git a/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java b/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java index 304a55210..072c19971 100644 --- a/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java +++ b/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/modular/requestapi/aop/RequestApiLogRecordAop.java @@ -21,6 +21,7 @@ import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.Ordered; import org.springframework.core.ParameterNameDiscoverer; import org.springframework.ui.Model; +import org.springframework.web.multipart.MultipartFile; import java.lang.reflect.Method; import java.util.HashMap; @@ -171,9 +172,11 @@ public class RequestApiLogRecordAop implements Ordered { // 处理基本类型 Class[] classes = new Class[args.length]; for (int k = 0; k < args.length; k++) { - if(args[k] instanceof Model){ + if (args[k] instanceof Model) { classes[k] = Model.class; - }else{ + } else if (args[k] instanceof MultipartFile) { + classes[k] = MultipartFile.class; + } else { classes[k] = args[k].getClass(); } @@ -194,7 +197,14 @@ public class RequestApiLogRecordAop implements Ordered { // 装载参数名称和参数值 for (int i = 0; i < parameterNames.length; i++) { - paramMap.put(parameterNames[i], args[i]); + // 解决上传文件接口aop记录日志报错 + if (args[i] instanceof MultipartFile && args[i]!=null) { + // 根据参数名只记录文件名 + paramMap.put(parameterNames[i], ((MultipartFile) args[i]).getOriginalFilename()); + }else{ + paramMap.put(parameterNames[i], args[i]); + } + } } catch (Exception e) { @@ -203,11 +213,16 @@ public class RequestApiLogRecordAop implements Ordered { if (log.isDebugEnabled()) { e.printStackTrace(); } -// log.error(e.getMessage()); + log.error(e.getMessage()); // 有异常则不显示参数名称直接返回参数 for (int i = 0; i < args.length; i++) { - paramMap.put("args" + i, args[i]); + if (args[i] instanceof MultipartFile && args[i]!=null) { + // 根据参数名只记录文件名 + paramMap.put("args" + i, ((MultipartFile) args[i]).getOriginalFilename()); + }else { + paramMap.put("args" + i, args[i]); + } } } diff --git a/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/XssFilterAutoConfiguration.java b/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/XssFilterAutoConfiguration.java index 598525792..6db4c903a 100644 --- a/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/XssFilterAutoConfiguration.java +++ b/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/XssFilterAutoConfiguration.java @@ -47,7 +47,7 @@ public class XssFilterAutoConfiguration { @Bean public Jackson2ObjectMapperBuilderCustomizer xssJackson2ObjectMapperBuilderCustomizer() { return jacksonObjectMapperBuilder -> - jacksonObjectMapperBuilder.deserializerByType(String.class, new XssJacksonDeserializer(new XssProperties())); + jacksonObjectMapperBuilder.deserializerByType(String.class, new XssJacksonDeserializer(createProperties())); } /**