如何在IE浏览器中使用JavaScript从客户端获取文件大小?

9

I used the following methode

HTML

<input type="file" id="loadfile" />

JavaScript

var file = document.getElementById('loadfile').files[0];
alert( "name " +  file.name + "Size " +  file.size );

在其他浏览器中都可以正常工作,唯独IE不行 :( 如何让其在IE中运行?


4
IE不支持文件API。 - Ram
2
http://caniuse.com/#feat=fileapi - adeneo
谢谢大家...我也从各个地方得到的信息是IE不支持这个功能 :(我找到了一个很棒的文件上传插件 http://blueimp.github.com/jQuery-File-Upload/ - raki
如果您使用Flash,可能可以做到这一点。Flash不是一个选项吗?我们使用的是一个能够获取文件大小的Flash上传器,但我认为我们所使用的是定制的上传器,而不是一些公开可用的Flash上传器。但是,公开可用的上传器也可能具有该功能。我们仅在IE中使用Flash上传器,并在其他浏览器上使用基于HTML5/JS的上传器。建议您考虑采用相同的方法。 - David
这个在IE 10及以上版本中有效,还要检查是否有meta元素。例如:<meta http-equiv="x-ua-compatible" content="IE=9">。使用<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">代替。 - RasikaSam
5个回答

5

1

你可以使用ActiveX这样做

function getSize()
{
 var myFSO = new ActiveXObject("Scripting.FileSystemObject");
 var filepath = document.upload.file.value;
 var thefile = myFSO.getFile(filepath);
 var size = thefile.size;
 alert(size + " bytes");
}

更多细节请参见此处;

如何在客户端使用HTML和Javascript验证文件大小


1
document.getElementById('loadfile').addEventListener('change', checkFile, false);

function checkFile(e) {
    var file_list = e.target.files;
    for (var i = 0, file; file = file_list[i]; i++) {
        var fileExtension = file.name.split('.')[file.name.split('.').length - 1].toLowerCase();
        var iConvert = (file.size / 1024).toFixed(2);

        txt = "File type : " +fileExtension + "\n";
        if(file.size > (1024 * 1024)){
            txt += "Size: " + (file.size / (1024*1024)).toFixed(2) + " MB \n";
        } else {
        txt += "Size: " + (file.size / 1024).toFixed(2) + " KB \n";
        }
        alert(txt);
    }
}

看一下 filddle


适用于兼容HTML5的浏览器,但不支持IE9。 - Vakey
IE9没有file.size - Stiger

0

7
当我尝试在 jQuery 的 onchange 函数中运行时,出现了“自动化服务器无法创建对象”的错误。 - Will

0

IE 9及以前版本不支持文件API,该API是获取文件大小所需的。IE10也不支持文件大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接