这是一个非常具体的问题。我希望这里有人对 FileUpload API 有很好的了解。
如果您使用过此 API,您应该知道,当超过文件的最大大小时,无法读取下一个项目,因为抛出 FileSizeLimitExceededException 并且如果您尝试再调用一次hasNext()
方法来迭代下一个项目由于输入流已关闭并且您尝试再次读取它,因此引发 IOException。
这种情况非常糟糕,因为无法读取下一个参数。假设这种形式:
<form action="..." method="post" enctype="multipart/form-data">
<input type="hidden" name="param1" value="foo"/>
<input type="file" name="myFile"/><br/>
<input type="hidden" name="param2" value="bar"/>
<input type="submit"/>
</form>
现在文件超过了最大大小。结果:
读取“param1”。
“myFile”生成 FileSizeLimitExceededException。
未读取“param2”。
我正在尝试重写部分 API - 没有运气 - 因为我想阅读下一项(在本例中为“param2”)。
有人遇到过同样的问题吗?你是怎么修好的?
谢谢。
编辑:嗯,我已经实现了 BalusC 提出的解决方案。未来:
FileUpload 包装器
FileUpload 包装器的使用
如果您认为此包装器需要其他任何内容,请直接说出来。我不接受它作为真正的解决方案,因为理想的是修改和修复 API 本身。