【问题标题】:How do you restrict the size of a file being uploaded with JavaScript (or Java) without transferring the entire file?如何在不传输整个文件的情况下限制使用 JavaScript(或 Java)上传的文件的大小?
【发布时间】:2010-09-14 13:29:28
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: java javascript jsp file-upload


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-18
          • 1970-01-01
          • 1970-01-01
          • 2017-01-18
          • 2016-09-06
          • 1970-01-01
          • 2014-03-20
          • 2011-04-09
          相关资源
          最近更新 更多