使用Javascript获取文件属性(客户端)

时间:2010-07-05 16:36:43

标签: javascript jquery

在我的应用程序中,我需要在客户端端计算文件的大小(在上传到服务器之前)。

我想限制上传的文件,如果它不符合我的要求,例如文件尺寸,文件类型 ..

是否可以使用JavaScript在客户端实现此目的?

3 个答案:

答案 0 :(得分:4)

在绝大多数当前浏览器中,使用纯JS 完成此操作无法。一些较新的HTML5文件工具可能允许这样做,但它们的支持是有限的。

您需要使用基于Flash的上传器工具在上传之前获取此数据。查看YUI Uploader即可开始使用。

我建议你这样实现:

  1. 在服务器上采取一些预防措施来限制上传大小(每种服务器技术处理方式略有不同)。 始终执行此操作,因为可以绕过客户端控件
  2. 使用标准的文件上传输入元素启动
  3. 使用YUI Uploader或Uploadify之类的东西逐步增强它。这样,对于与Flash用户不匹配的文件,它的工作速度更快,但 也适用于普通上传,因为它也会在服务器上进行检查。

答案 1 :(得分:2)

在实际使用POST请求向服务器提交文件之前,这实际上是不可能的(可能是在IE中使用了一些Java + ActiveX漏洞)。

答案 2 :(得分:1)

在支持HTML5 File API的浏览器中,您现在可以。

这是true for updated browsers,毫不奇怪IE excluded

var files = $(this).attr('files');
var MAXFILESIZE = 500000; // bytes
if (files) {
    // <input type="file" multiple>
    for (var i = 0; i < files.length; i++) {
        // We can also validate files[i].type or files[i].name vs an expected file type
        if (files[i].size > MAXFILESIZE) {
            alert('File "'+files[i].name+'" is too big.');
        }
    }
}

未来说“你好”! :)