我有一个上传进度栏,该进度栏在文件输入时有效,当进度条达到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);
}
Spring Boot:
@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:/";
}
答案 0 :(得分:1)
由于MultipartFile[]
文件刚刚被初始化,但不包含任何值数组。
更改
public String upload(@RequestParam("files") MultipartFile[] files)
到
public String upload(@RequestPart(value = "files", required = true) MultipartFile[] files)
答案 1 :(得分:1)
在JavaScript中,您正在将文件添加到“ newFile”变量中,但是在春季,您正在从请求参数“文件”中提取文件。
您要上传多个文件吗?似乎并非如此。仅尝试使用Multipart。