今天碰到个取上传文件大小的问题,主要是针对IE浏览器的。ie的情况分两种ie8以上版本和ie8及以下版本,在做文件上传取出对象时,IE8以上版本有一个files数组属性,可以通过取第一个数组的size拿出文件的大小(以b为单位,至于属性,有兴趣的可以按f12打断点查看一下)。而版本低的则需要取的上传文件的物理路径,根据物理路径取出文件的大小。
以下是范例:
ie8以下页面范例:
<html>
<head>
<title>测试页面</title>
<script>
function getsize(){
var fileId = "uploadtest";
var dom = document.getElementById(fileId);
dom .select();
var realpath = document.selection.createRange().text;
var fso = new ActiveXObject("Scripting.FileSystemObject");
alert(fso.GetFile(realpath).size);
}
</script>
</head>
<body>
<input type= 'file' name = 'upload' id = 'uploadtest' οnchange="getsize();"/>
</body>
</html>
ie8以上页面范例:
<html>
<head>
<title>测试页面</title>
<script>
function getsize(){
var fileId = "uploadtest";
var dom = document.getElementById(fileId);
alert(dom.files[0].size);
}
</script>
</head>
<body>
<input type= 'file' name = 'upload' id = 'uploadtest' οnchange="getsize();"/>
</body>
</html>
因为低版本中没有files数组,所以取值比较麻烦,但是xp系统最高到ie8,没办法,麻烦也得用,