XHR 分段文件上传 Spring 启动问题



我有一个上传进度条,适用于文件输入,当该进度条达到 100% 时,没有错误。但是当我在 Spring Boot 中打印文件的内容时,我注意到 for 循环中的代码没有运行。这是代码。请帮忙,谢谢!

JavaScript:

function upload(file) {
var formData = new FormData();
formData.append("newFile", file);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload');
xhr.onload = function(e) {
console.log("xhr onload function");
};
var progressBar = document.querySelector('progress');
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
progressBar.value = (e.loaded / e.total) * 100;
progressBar.textContext = progressBar.value;
}
};
xhr.send(formData);
}

弹簧启动:

@RequestMapping(value="/upload", method=RequestMethod.POST)
public String upload(@RequestParam("files") MultipartFile[] files) {
// This prints [Lorg.springframework.web.multipart.MultipartFile;@........].
System.out.println(files);
for (MultipartFile file : files) {
// This doesn't get printed.
System.out.println(file.getOriginalFilename());
}
return "redirect:/";
}

在 JavaScript 中,您将文件添加到"newFile"变量中,但在弹簧侧,您正在从请求参数"文件"中提取文件。

您要上传多个文件吗?似乎不是这样。仅尝试使用多部件。

>因为MultipartFile[]文件刚刚初始化,但不包含任何值数组。

更改

public String upload(@RequestParam("files") MultipartFile[] files)

public String upload(@RequestPart(value = "files", required = true) MultipartFile[] files)

最新更新