【问题标题】:Can ServletFileUpload.parseRequest() only be called once per request?ServletFileUpload.parseRequest() 每个请求只能调用一次吗?
【发布时间】:2010-02-19 17:51:00
【问题描述】:

我正在为我的 Grails 应用程序使用自定义 SpringSecurityFilter,并且我正在尝试使用公共上传库来处理请求。我能够处理过滤器中的请求,但是一旦它到达我的控制器,就没有任何值可用。

上传库只能处理一次HttpRequest吗?我猜它正在清理临时文件。有没有办法保留它们,以便在控制器级别再次处理它们?

我需要为安全性查询一个表单参数(由于客户端我无法将其添加到 http 标头中)但是一旦我获得该值,它似乎会擦除请求以进行进一步处理。

【问题讨论】:

  • 嗨tgm,我和你有同样的问题。你找到解决办法了吗?
  • 还没有。我尝试编写自定义安全过滤器但没有成功。我们为正常身份验证添加了标头,并使用会话身份验证来暂时解决该问题。当我有时间时,我计划尝试使用 Shiro 或构建自定义的 grails 身份验证过滤器(这可行)。如果您没有绑定到 SpringSecurity,请尝试使用 Grails Filters 路由。

标签: grails file-upload apache-commons


【解决方案1】:

是的。一个请求只能被解析一次。

我在 Apache 的 FileUpload 常见问题解答页面上看到了这个答案。

问题:为什么 parseRequest() 没有返回任何项目?

答案:“这最常发生在请求已被解析或以其他方式处理时。由于输入流已被该早期进程消耗,因此不再可用于 Commons 解析文件上传。”

参考:http://commons.apache.org/fileupload/faq.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多