在不传输整个文件的情况下,如何限制使用JavaScript(或Java)上载的文件的大小?

在不传输整个文件的情况下,如何限制使用JavaScript(或Java)上载的文件的大小?,java,javascript,jsp,file-upload,Java,Javascript,Jsp,File Upload,是否有一种方法可以在客户端浏览器上验证从JSP页面上载的文件大小是否超过设置的大小限制,而不强制用户上载整个文件,直到发现文件太大 如果可能的话,我想远离任何专有控件或技术,如Flash或ActiveX 谢谢 这不是一个完美的解决方案,但是如果您使用request.getHeader(“Content Length”)检查内容长度HTTP头,那么您可以选择不传输整个文件 作为解释,一个非常大的文件不会一次传输完。实际上,您必须打开一个表示POST数据块的流,并从中读取整个要传输的内容 另一方面,

是否有一种方法可以在客户端浏览器上验证从JSP页面上载的文件大小是否超过设置的大小限制,而不强制用户上载整个文件,直到发现文件太大

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


谢谢

这不是一个完美的解决方案,但是如果您使用
request.getHeader(“Content Length”)
检查内容长度HTTP头,那么您可以选择不传输整个文件

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


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

建议您重新考虑闪存决定,并查看YUI上载程序,如下所示:


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

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

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