在将文件上传到服务器之前跨浏览器检查客户端的文件大小?

Posted

技术标签:

【中文标题】在将文件上传到服务器之前跨浏览器检查客户端的文件大小?【英文标题】: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 文件。 【参考方案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。

以上是关于在将文件上传到服务器之前跨浏览器检查客户端的文件大小?的主要内容,如果未能解决你的问题,请参考以下文章

在使用 PHP 上传到临时目录之前检查图像的文件大小

上传/下载之前/之后的客户端(javascript/jQuery)文件操作

文件上传

java web 怎么从服务器下载文件到客户端的指定位置

在将多个文件上传到服务器之前验证多个文件上传中的单个文件

在将图像发送到服务器之前上传并裁剪图像[关闭]