如何在 Apache Wicket 中限制上传的文件大小1.4 版?
我正在使用 FileUploadField在没有任何 Ajax 内容的情况下处理正常表单提交的上传。使用 Form.setMaxSize() 就够了吗?限制上传文件的大小?
如果上传的文件太大,浏览器将上传整个文件,Wicket 将使用键 [form-id].uploadTooLarge
创建验证错误消息。
但是 Wicket 如何在内部处理这种情况,创建临时文件等?
我想防止在 Wicket 处理请求时用户上传不适合内存或磁盘的几 GB 文件的情况。
最佳答案
我在 Wicket 口做了一些挖掘 repository并发现该文件实际上是由 FileUploadBase.parseRequest(RequestContext ctx) 写入磁盘的.此类在将任何文件写入磁盘之前检查文件大小。
文件大小检查最终使用 javax.servlet.ServletRequest.getContentLength() 来确定文件的大小,这意味着实际实现因您使用的 servlet 容器而异;但是,我要说的是,可以安全地假设任何编写过 servlet 实现的人都知道足以从 header 中获取文件大小,而不是将整个文件写入磁盘然后检查其大小。因此,您不必担心人们试图上传大文件会耗尽您的所有磁盘空间。
关于http - 如何在 Wicket 中限制上传文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761604/