js判断客户端文件大小

背景:上传文件前就先要在客户端判断文件大小,免得让用户传了很久后发现上传失败

 

在网上找了很久,东平西凑了下面的代码,测试在ff和ie中通过

 

不过对于ie,如果用户禁止了activex控件,则无法生效,但我没有找到更好的办法

网上还有用img来判断文件大小的,但我测试在ie7,8下不行,希望有高手能赐教

 

 

 

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>

<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>input type=file & Firefox 3</title>
</head>

<body>

<h1>input type=file & Firefox 3</h1>

<script type=”text/javascript”>
// <![CDATA[

function inputFileOnChange(files) {
if(document.getElementById('my-file').files) {

//for firefox
alert('fileSize: ' + document.getElementById('my-file').files.item(0).fileSize);

}
else{

//for IE

fso=new ActiveXObject("Scripting.FileSystemObject");
f=fso.GetFile(files);
//  var mySize = f.size/1024;
//  alert(mySize+" K ");
alert(f.size);

}

files="";
//alert(files);

};

// ]]>
</script>

<div>
<input type=”file” name=”my-file” id=”my-file” onchange=”inputFileOnChange(this.value);” />
</div>

</body>
</html>

<html>
<head>
<title>JS获取上传文件的绝对路径,兼容IE和FF</title>
<script type=”text/javascript”>
function readFile(fileBrowser) {
if (navigator.userAgent.indexOf(“MSIE”)!=-1){
alert(“a”);
readFileIE(fileBrowser);
}else if (navigator.userAgent.indexOf(“Firefox”)!=-1 || navigator.userAgent.indexOf(“Mozilla”)!=-1){
alert(“b”);
readFileFirefox(fileBrowser);
}else{
alert(“c”);
alert(“Not IE or Firefox (userAgent=” + navigator.userAgent + “)”);
}
}

function readFileFirefox(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege(“UniversalXPConnect”);
}
catch (e) {
alert(‘路径错误!’);
return;
}

var fileName=fileBrowser.value;
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
try {
file.initWithPath( fileName.replace(///g, “\\“) );
}
catch(e) {
if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
return;
}

if ( file.exists() == false ) {
alert(“File ‘” + fileName + “‘ not found.”);
return;
}
alert(file.path);
}

function readFileIE(fileBrowser) {
alert(document.getElementByIdx_xx_x(“fileBrowser”).value);
}
</script>

</head>
<body>
<form name=”form1″>

<input type=”file” name=”fileBrowser” size=”50″ onchange=”readFile(this)” onblur=”readFile(this)” />
</form>
</body>
</html>

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>