新增 Markdown 编辑器,文件上传接口

This commit is contained in:
thinkgem
2025-04-09 15:07:55 +08:00
parent 228b507f12
commit 3e0a5abcda

View File

@@ -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<String, Object> upload(MultipartFile[] files, String md5s, String bizKey, String bizType, String updateType) {
Map<String, Object> 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<String, Object> data = new HashMap<>();
Map<String, String> succMap = new HashMap<>();
Map<String, String> 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<String, Object> 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;
}
}