前端传参方式:
<form id="uploadForm" enctype="multipart/form-data">
<input type="file" name="files" multiple />
<button type="button" onclick="submitForm()">上传</button>
</form>
<script>
function submitForm() {
const formData = new FormData(document.getElementById("uploadForm"));
fetch("/upload", {
method: "POST",
body: formData
}).then(res => res.json()).then(console.log);
}
</script>
后端收参方式:
@PostMapping("/upload")
public R<?> uploadFiles(@RequestParam("files") List<MultipartFile> files) {
if (files == null || files.isEmpty()) {
return R.failed("请上传至少一个文件");
}
List<EvidenceDoc> docList = new ArrayList<>();
for (MultipartFile file : files) {
if (!file.isEmpty()) {
// 可复用你已有的上传逻辑
String originalFilename = file.getOriginalFilename();
String fileTag = UUID.randomUUID() + "_" + originalFilename;
Path filePath = Paths.get(basedir, "evidence", fileTag);
try {
Files.createDirectories(filePath.getParent());
Files.write(filePath, file.getBytes());
UploadDocRep uploadDoc = new UploadDocRep();
uploadDoc.setName(originalFilename);
uploadDoc.setFileSize(Files.size(filePath));
uploadDoc.setFileTag(fileTag);
List<UploadDocRep> repList = Collections.singletonList(uploadDoc);
// 假设 fileType 和 dirId 为你提前传入的参数
List<EvidenceDoc> oneFileDocList = evidenceDocService.uploadFileInsertFileInfo(dirId, repList, fileType);
docList.addAll(oneFileDocList);
} catch (IOException e) {
return R.failed("文件处理失败:" + originalFilename);
}
}
}
return R.ok(docList);
}