diff --git a/modules/core/src/main/java/com/jeesite/modules/file/web/VditorController.java b/modules/core/src/main/java/com/jeesite/modules/file/web/VditorController.java new file mode 100644 index 00000000..373c34cb --- /dev/null +++ b/modules/core/src/main/java/com/jeesite/modules/file/web/VditorController.java @@ -0,0 +1,82 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.file.web; + +import com.jeesite.common.config.Global; +import com.jeesite.common.lang.StringUtils; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.file.entity.FileUpload; +import com.jeesite.modules.file.entity.FileUploadParams; +import com.jeesite.modules.file.utils.FileUploadUtils; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import java.util.HashMap; +import java.util.Map; + +/** + * Vditor Controller + * @author ThinkGem + * @version 2025-04-09 + */ +@Controller +@RequestMapping(value = "${adminPath}/file/vditor") +@ConditionalOnProperty(name={"file.enabled","web.core.enabled"}, havingValue="true", matchIfMissing=true) +public class VditorController extends BaseController { + + @RequestMapping(value = "upload") + @ResponseBody + public Map upload(MultipartFile[] files, String md5s, String bizKey, String bizType, String updateType) { + Map result = new HashMap<>(); + result.put("code", 0); + if (files == null || files.length == 0 || StringUtils.isAnyBlank(md5s, bizKey, bizType)) { + result.put("msg", text("上传的文件不能为空")); + return result; + } + String[] fileMd5s = StringUtils.splitComma(md5s); + if (fileMd5s.length != files.length) { + result.put("msg", text("文件校验码与文件的长度不等")); + return result; + } + Map data = new HashMap<>(); + Map succMap = new HashMap<>(); + Map errFiles = new HashMap<>(); + for (int i = 0; i < files.length; i++) { + MultipartFile file = files[i]; + FileUploadParams params = new FileUploadParams(); + params.setFileMd5(fileMd5s[i]); + params.setFileName(file.getOriginalFilename()); + params.setBizKey(bizKey); + params.setBizType(bizType); + params.setUploadType(updateType); + params.setFile(file); + Map res = FileUploadUtils.saveFileUpload(params); + if (Global.FALSE.equals(res.get("result"))) { + errFiles.put(params.getFileName(), (String)res.get("message")); + } else { + FileUpload fileUpload = (FileUpload)res.get("fileUpload"); + succMap.put(params.getFileName(), Global.getCtxPath() + fileUpload.getFileUrl()); + } + } + if (!errFiles.isEmpty()) { + result.put("code", 1); + if (errFiles.size() == files.length) { + result.put("msg", StringUtils.join(errFiles.values(), "; ")); + } else { + result.put("msg", text("部分上传失败:") + StringUtils.join(errFiles.values(), "; ")); + } + data.put("errFiles", errFiles.keySet()); + } else { + result.put("msg", text("上传的文件成功")); + data.put("succMap", succMap); + } + result.put("data", data); + return result; + } + +} \ No newline at end of file