Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
springmvc处理部分文件上传_Spring_Spring Mvc_Multipartform Data - Fatal编程技术网

springmvc处理部分文件上传

springmvc处理部分文件上传,spring,spring-mvc,multipartform-data,Spring,Spring Mvc,Multipartform Data,我需要处理包含要上载到服务器的文件的多部分/表单数据请求。如果客户端在完全上传文件之前断开连接,服务器应保存部分上传的文件 我使用Spring MVC控制器来处理此问题: public class FileUploadController { @RequestMapping("/upload") public String handleUploadRequest(MultipartHttpServletRequest request) { Mult

我需要处理包含要上载到服务器的文件的多部分/表单数据请求。如果客户端在完全上传文件之前断开连接,服务器应保存部分上传的文件

我使用Spring MVC控制器来处理此问题:

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