springmvc处理部分文件上传
我需要处理包含要上载到服务器的文件的多部分/表单数据请求。如果客户端在完全上传文件之前断开连接,服务器应保存部分上传的文件 我使用Spring MVC控制器来处理此问题:springmvc处理部分文件上传,spring,spring-mvc,multipartform-data,Spring,Spring Mvc,Multipartform Data,我需要处理包含要上载到服务器的文件的多部分/表单数据请求。如果客户端在完全上传文件之前断开连接,服务器应保存部分上传的文件 我使用Spring MVC控制器来处理此问题: public class FileUploadController { @RequestMapping("/upload") public String handleUploadRequest(MultipartHttpServletRequest request) { Mult
public class FileUploadController {
@RequestMapping("/upload")
public String handleUploadRequest(MultipartHttpServletRequest request) {
MultipartFile file = request.getFile("File");
InputStream stream = file.getInputStream();
// read data from stream
}
}
已扩展commonmultipartresover
以覆盖
public class FileUploadMultipartResolver extends CommonsMultipartResolver {
@Autowired
ServletContext servletContext;
@Override
public void cleanupMultipart(MultipartHttpServletRequest request) {
File tempDir = (File) servletContext.getAttribute(ServletContext.TEMPDIR);
File[] files = tempDir.listFiles();
for(int i=0; i< files.length; i++) {
LOGGER.debug("filename: " + files[i].getName() + ", size: " + files[i].length());
}
} }
但是,当客户端在完全上载之前终止时,我无法获取部分上载的文件
我认为MultiPartResolver应该为每个MaxInMemorySize字节将字节写入servlet容器临时目录,但事实并非如此。。只有当完整的请求数据到达服务器时,我才能看到servlet容器临时目录中的数据
我想知道我是否遗漏了什么。多部分上传和可恢复上传是完全不同的。 您希望如何使用此方法在客户端恢复上载 有几种方法可以解决这个问题,其中之一是使用在客户端对文件进行切片并逐片上传。上传所有切片后,您可以在服务器上组装它们 像这样的库在HTTP上有自己的“自定义协议”来跟踪上传进度,而其他库则选择使用 现在回答您的问题,AFAIK不支持Spring框架中的内容范围上传,您知道;但是,您可以使用这些解决方案之一在服务器端实现可恢复的上载
@Configuration
public class RcseFtcsConfiguration {
@Bean(name="multipartResolver")
public MultipartResolver getMultipartResolver() throws IOException {
FileUploadMultipartResolver resolver = new FileUploadMultipartResolver();
resolver.setResolveLazily(true);
resolver.setMaxInMemorySize(1024);
return resolver;
} }