使用 Tomcat 6,我使用 apache commons FileUpload 来允许图像上传。我可以使用 setSizeMax 和 setFileSizeMax 设置最大文件。但似乎上传了整个大文件,然后检查它是否太大。根据另一篇文章,似乎 setSizeMax 应该切断上传,但这不是我得到的行为。
为了测试这一点,我将 sizeMax 和 fieSizeMax 设置得很低,并上传了一个相当大的文件。上传大文件需要 15 秒,而不是几乎瞬间将其切断。
任何想法?这是一些代码,带有简化的异常子句。
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(30);
upload.setSizeMax(28);
List items = null;
try {
items = upload.parseRequest(request);
} catch (Exception e) {
out.println("exceeded max file size..");
return;
}
更多信息:使用 tomcat 6. 设置 maxPostSize 不适用于内容类型:multipart/form-data。此外,再次检查请求内容长度需要上传整个文件。最后,使用 FileUpload 的 steaming api 似乎也不起作用,因为它似乎再次要求在关闭流之前上传整个文件;即使 servlet 没有将字节写入磁盘,上传也会继续。必须有一种方法可以防止使用 tomcat 6 进行大量上传,因为上传图像等对于网络应用程序来说是一项非常常见的任务。