11

有没有办法在客户端浏览器上验证从 JSP 页面上传的文件的大小是否超过设定的大小限制,而不强制用户上传整个文件才发现它太大了?

如果可能,我想远离任何专有控件或技术,如 Flash 或 ActiveX。

谢谢!

4

3 回答 3

4

这不是一个完美的解决方案,但是如果您检查 Content-Length HTTP 标头,request.getHeader("Content-Length")那么您可以选择不传输整个文件。

作为解释,一个非常大的文件不会一次全部传输。您实际上必须打开一个表示该 POST 数据块的流并从中读取整个要传输的数据。

另一方面,如果您担心拒绝服务攻击,那么您就不能真正信任 Content-Length 标头,因为它很容易被伪造。在这种情况下,您应该设置一个限制并流式传输此文件,一旦超过该限制就停止。

于 2008-10-01T15:22:23.420 回答
2

建议您重新考虑 Flash 决定并查看 YUI Uploader,此处:

http://developer.yahoo.com/yui/uploader/

除其他事项外,fileSelect 事件将在选择文件之后但在上传之前立即告诉您所选文件的大小(以字节为单位),因此您可以进行相应的限制。

于 2008-10-01T15:45:30.353 回答
1

使用 JSP 或 PHP,您将无法限制文件大小,因为您的页面在上传完成之前不会收到请求。此时您可以决定不保存文件,但这可能为时已晚。

有一些 Java 解决方案,例如MyUploaderHermes。有些甚至支持多文件上传和恢复部分上传,有些还给你源代码。您也可以自己编写,但它需要是一个签名的小程序才能运行,因为它需要访问本地文件系统。如果您使用 Apache 作为您的网络服务器,则您的机器中需要足够的 RAM 以适应在给定时间上传的所有文件的内存中的整个文件大小。

于 2008-10-01T15:51:32.880 回答