Java Web 实现一个接口上传多个文件

前端传参方式:

<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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值