Java 春季多用户文件上传
我在Spring中创建了一个web应用程序,它允许多个用户同时上传文件,也可以将文件分块上传,这样就不会出现内存问题,但我当前的代码只允许一个用户一次上传一个文件。在第一个文件完成之前,第二个文件不会启动。我将如何着手纠正这个问题 这是我的上传表格:Java 春季多用户文件上传,java,spring,maven,spring-mvc,Java,Spring,Maven,Spring Mvc,我在Spring中创建了一个web应用程序,它允许多个用户同时上传文件,也可以将文件分块上传,这样就不会出现内存问题,但我当前的代码只允许一个用户一次上传一个文件。在第一个文件完成之前,第二个文件不会启动。我将如何着手纠正这个问题 这是我的上传表格: <body> <div th:if="${message}"> <h2 th:text="${message}"></h2> </div> <
<body>
<div th:if="${message}">
<h2 th:text="${message}"></h2>
</div>
<div>
<form method="post" enctype="multipart/form-data" action="/">
<table>
<tr><td>File to Upload:</td><td><input type="file" name="file" /></td></tr>
<div id="drop_zone">Drop files here</div>
<output id="list"></output>
<tr><td></td><td><input type="submit" value="Upload" /></td></tr>
</table>
</form>
</div>
<div>
<ul>
<li th:each="file : ${files}">
<a th:href="${file}" th:text="${file}" />
</li>
</ul>
</div>
</body>
我今年春天才3个月大,所以任何帮助都将不胜感激
谢谢 您可以将html从
更改为
,这样您就可以获得一个可以选择多个文件的表单
在此之后,您只需更改控制器中的post方法,以便获得一个MultipartFile数组。这样您就可以遍历这个数组并逐个处理文件
@PostMapping("/")
public String handleFileUpload(@RequestParam("manyfiles") MultipartFile[] files,
RedirectAttributes redirectAttributes) {
for(MultipartFile file : files) {
//Your upload code
}
}
编辑:
如果需要asynchonus上载,请将byted传递给上载方法,并将其标记为async
@Async
public void process(byte[] bs){
//do some long running processing of bs here
}
@PostMapping("/")
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
upload.process(IOUtils.toByteArray(file));
}
感谢您的快速回复,但您的解决方案允许我选择多个文件。我希望多个用户同时上传文件。当前,如果用户A正在上载一个大文件,则用户B的上载将等待第一个文件完成。所以基本上我在看一个异步文件上传
spring.http.multipart.max-file-size=15000MB
spring.http.multipart.max-request-size=15000MB
@PostMapping("/")
public String handleFileUpload(@RequestParam("manyfiles") MultipartFile[] files,
RedirectAttributes redirectAttributes) {
for(MultipartFile file : files) {
//Your upload code
}
}
@Async
public void process(byte[] bs){
//do some long running processing of bs here
}
@PostMapping("/")
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
upload.process(IOUtils.toByteArray(file));
}