【问题标题】:ServletFileUpload parseRequest empty list [duplicate]ServletFileUpload parseRequest 空列表 [重复]
【发布时间】:2014-07-20 12:05:45
【问题描述】:

ServerFileUpload.parseRequest 偶尔返回一个空列表时遇到问题。

我已阅读:

File upload with ServletFileUpload's parseRequest?

还有这个:

ServletFileUpload#parseRequest(request) returns an empty list

如上所述,这只会偶尔发生一次,通常如果上传的人在一段时间后重试,它就会起作用。 我无法在我的开发环境中重现这种行为,但它发生在生产环境中,这让我抓狂。

任何可能导致此问题的指示将不胜感激。

谢谢

【问题讨论】:

  • 我面临同样的问题。你能解决这个问题吗?
  • @Freakyuser,很遗憾没有。这仍然是一个持续的问题。
  • 好的,我已经使用 JSP 来完成控制器的工作了。那么它工作正常。该列表包含 1 个对象。

标签: servlets file-upload multipartform-data apache-commons-fileupload


【解决方案1】:

您可以通过在application.properties 中设置spring.http.multipart.enabled=false 来禁用Spring boot 多部分支持。这帮助我解决了问题

【讨论】:

    【解决方案2】:

    如果您使用的是框架,它可能会在读取请求时尝试在数据到达您的控制器之前解析数据。流只能读取一次。例如,我的项目中使用 SpringFramework 的默认多部分解析器阻止了我为一个特定需求成功实现单独的唯一自定义上传器。

    【讨论】:

    • 我正好遇到了这个问题。我刚刚将 org.springframework.boot 添加到现有项目中,我的文件上传 servlet 开始出现此问题。把它拿走,它又可以工作了。但我想使用它。任何人都知道如何指导 spring 忽略这个特定的 servlet?我通过我的 pom.xml 添加它并使用 @RestController 来定义我想要控制的 servlet。不知道为什么它会控制其他任何东西。呃。
    • 看来 Boot 使用的是标准的StandardServletMultipartResolver。查看 MultipartAutoConfiguration.java 以了解它在做什么。我设法绕过标准的多部分处理(不使用引导)的方法是在你的情况下覆盖CommonsMultipartResolver 中的isMultipart StandardServletMultipartResolver 以返回 false 为我想以不同方式处理的 URI。也许你也可以这样做。更好的是,如果您从不使用标准的多部分处理,请了解如何覆盖 MultipartAutoConfiguration 以不设置特殊的 MultipartResolver。
    猜你喜欢
    • 2012-12-02
    • 2012-10-14
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多