【发布时间】:2015-05-20 23:03:45
【问题描述】:
我一直在寻找可以在抛出异常时分解我的请求的方法。 我在我的 jsp 中有一个文件上传,不能超过 2MB。 有 jsp 验证,但在使用 internet explorer 8 或 9 时必须有额外的安全性,因为那里不支持文件 API 或客户端禁用 javascript。
我有一个来自 spring 的 CommonMultipartResolver,它可以在上传更大的文件时正确处理我的请求(它会引发 MaxUploadSizeExceededException)。当我的 ExceptionResolver 处理请求并发送回 ModelAndView 时。
当我上传一个例如 4GB 的文件时,就会出现真正的问题。异常由 multipartResolver 抛出,异常被异常处理程序捕获,并且试图返回一个 modelAndView。尝试返回 modelAndView 需要很长时间才能返回,因为正在处理请求并且文件必须完全上传。
我想分解我的请求并停止处理文件上传,有这方面经验的人吗?
【问题讨论】:
-
如果不将文件直接流式传输到服务器,则无法确定文件大小。服务器无法访问客户端的文件系统。如果要在客户端检查文件大小并分解,则需要使用客户端文件上传库,例如JQuery File Upload
-
我不想要 jsp 验证,我实际上想要 java 验证来解决额外的安全问题,因为您将始终能够绕过上传文件的前端。所以我想分解请求而不是处理整个文件。处理文件时抛出异常,但是当我重定向到我的原始页面或另一个(没关系)时,它需要很长时间,因为文件仍然需要处理......
-
@Bond-JavaBond 我不能使用分块文件上传,因为 IE8 和 9 不支持这个。这也可以通过在没有前端的情况下执行 restcall 来绕过......我只需要 java 来取消处理和重定向的请求。
标签: java spring jsp file-upload spring-webflow