gpt4 book ai didi

java - apache commons FileUpload - 在整个文件上传之前切断大文件

转载 作者:行者123 更新时间:2023-11-30 11:44:31 24 4
gpt4 key购买 nike

使用 Tomcat 6,我使用 apache commons FileUpload 来允许图像上传。我可以使用 setSizeMax 和 setFileSizeMax 设置最大文件数。但似乎上传了整个大文件,然后检查它是否太大。另据post ,似乎 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 进行大量上传,因为上传图像等对于网络应用程序来说是一项非常常见的任务。

最佳答案

无论您是否将它们保存在服务器上,客户端都会发送这些位。服务器没有办法告诉客户端停止发送比特,除非强行关闭输入流(因为 HTTP 的性质:响应跟随请求——它们不是同时的)。您可以尝试这样做,但大多数应用程序服务器会在您执行 close() 时从客户端排出输入流,因此什么都不会改变。

如果您可以控制客户端并要求使用 100-Continue(通过 Expect header ),您可以窥探请求的 Content-Length 并通过发送否定回复而不是 100-Continue 来拒绝它.

关于java - apache commons FileUpload - 在整个文件上传之前切断大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10762820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com