Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java ApacheCommons文件上传流API在Spring5中不工作_Java_Spring_Spring Boot_Apache Commons Fileupload - Fatal编程技术网

Java ApacheCommons文件上传流API在Spring5中不工作

Java ApacheCommons文件上传流API在Spring5中不工作,java,spring,spring-boot,apache-commons-fileupload,Java,Spring,Spring Boot,Apache Commons Fileupload,我使用的是Apache Commons FileUpload Stream API,它与spring boot starter父版本1.5.14完美配合 public ResponseEntity<String> uploadFile(HttpServletRequest request) throws Exception { if (!ServletFileUpload.isMultipartContent(request)) { retur

我使用的是Apache Commons FileUpload Stream API,它与spring boot starter父版本1.5.14完美配合

public ResponseEntity<String> uploadFile(HttpServletRequest request) throws Exception
{    
    if (!ServletFileUpload.isMultipartContent(request))
    {
        return responseService.badRequest(request, "file", "Request is not multipart, please 'multipart/form-data' enctype for your form.");
    }

    ServletFileUpload upload = new ServletFileUpload();
    FileItemIterator iter = upload.getItemIterator(request);

    while (iter.hasNext())
    {
         FileItemStream item = iter.next();
         if (!item.isFormField()) 
         {
            save(item.openStream(), item.getName());

            return responseService.success(request);
         }
    }

    return responseService.badRequest(request, "file", "Must contain a file stream");
}
public ResponseEntity上载文件(HttpServletRequest请求)引发异常
{    
如果(!ServletFileUpload.isMultipartContent(请求))
{
return responseService.badRequest(请求,“文件”,“请求不是多部分的,请为您的表单键入“多部分/表单数据”);
}
ServletFileUpload upload=新建ServletFileUpload();
FileItemIterator iter=upload.getItemIterator(请求);
while(iter.hasNext())
{
FileItemStream item=iter.next();
如果(!item.isFormField())
{
保存(item.openStream(),item.getName());
返回响应服务成功(请求);
}
}
return responseService.badRequest(请求,“文件”,“必须包含文件流”);
}
我的属性文件中还设置了spring.http.multipart.enabled=false

但是,当我升级到2.0.3.RELEASE时,FileItemIterator的hasNext()只返回false


是否有人能够使用Spring 5/Springboot 2.0.x实现此功能?

在您的应用程序中。属性文件集:

spring.servlet.multipart.enabled=false

如果您没有设置此选项,您会发现它会立即关闭流

如果您使用的是较旧的演示,则可能已将Spring Boot 1.x值设置为
Spring.http.multipart.enabled=false
。这在Boot 2.0中已被弃用

尽管如此,现在是指出两个具体资源的好时机:

1.)Spring参考文档

这些文档显示了您可能不知道的常用应用程序属性之间的更改。利用IntelliJ这样的IDE,它会用带有信息提示的带红色下划线的曲线向您显示这一点(如果您碰巧利用了这一点)

2.)春季开机迁移指南 看看这本书

它定期接收更新,并指出这些类型的问题,以及迁移
应用程序.properties
的工具、默认值的更改(这些更改非常重要)和一些已更改的基础


如果您正在迁移应用程序,或者只是想进一步了解应用程序的不同行为以及原因,我强烈建议您这样做。

我面临同样的问题,hasNext()总是错误的,我使用Spring Boot 2.2.6和commons fileupload 1.4。我还注册了一个@Bean(name=“multipartResolver”),类型为commonmultipartresolver和setresolvely(true)。这段时间你让它工作了吗?