【问题标题】:Cross-browser checking on file size at client side before uploading it to the server?在将文件上传到服务器之前跨浏览器检查客户端的文件大小?
【发布时间】:2010-11-18 00:51:59
【问题描述】:

客户端验证对于提高可用性很重要。

在将文件上传到服务器之前,是否有任何跨浏览器方法来验证文件大小。我正在使用 asp.net 文件上传控件。

我发现一些第三方控件可以进行这项检查:

http://ajaxuploader.com/Demo/simple-upload.aspx

http://demo.essentialobjects.com/Default.aspx?path=AJAXU

但是怎么做?

【问题讨论】:

  • 你找到的控件都用flash:) 看看js。他们嵌入了 swf 文件。

标签: asp.net validation file-upload cross-browser client


【解决方案1】:

以前,在将文件发送到服务器之前确定文件大小的唯一方法是使用“比 JavaScript 更厚”的客户端插件/附加组件。这些必须安装在客户端系统上。例如。使用 SWFUpload、Java 小程序、ActiveX 控件。

现在,您可以使用 HTML5 File API,即:

var size = document.getElementById('myfile').files[0].size;

【讨论】:

  • 看起来像我的答案的副本!
  • @redsquare,我添加了您的“swfupload”作为示例之一。一个+1。 :-)
  • 在编写时为真,在 HTML5 文件 API 中不再为真。
  • 添加了 HTML5 文件 Api 示例 :)
【解决方案2】:

这现在可以通过 HTML5 的 File API 实现:

<script>
    var myFile = document.getElementById('myFile');
    var size;
    myFile.addEventListener('change', function() {
        size = this.files[0].size;
    });
</script>

most of the latest browsers 支持。

Internet Explorer 支持涉及 ActiveX 的 this workaround,但它需要降低 Internet Explorer 的安全设置,因此对于大多数应用程序来说,这并不是一个真正的选择。

这需要更多的工作,但如果您确实需要在 IE9 或更低版本中执行此操作,请使用基于 Flash 的上传器,例如 SWFUpload。 IE10 将(希望)添加对 HTML5 File API 的支持。

【讨论】:

  • IE 解决方法可以概括为:“关闭所有安全性并立即拥有 PC。)IE10 提供 HTML5 文件 API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
相关资源
最近更新 更多