js相容ie和chrome的檔案上傳大小校驗
阿新 • • 發佈:2019-02-02
js 檔案上傳功能在ie8和chrome下的語法會有不一樣的地方,取決於瀏覽器對file檔案物件的獲取不一樣。ie通過FileSystemObject此物件獲取,而chrome獲取$(“input[name=’file’]”).file[0].size獲取。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="./jquery-1.8.0.min.js"></script >
<script type="text/javascript">
var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
function fileChange(target,id) {
var fileSize = 0;
var filetypes =[".jpg",".png",".rar",".txt",".zip",".doc",".ppt",".xls",".pdf",".docx",".xlsx"];
var filepath = target.value;
var filemaxsize = 1024*2;//2M
var size;
// //檔案型別校驗
// if(filepath){
// var isnext = false;
// var fileend = filepath.substring(filepath.indexOf("."));
// if(filetypes && filetypes.length>0){
// for(var i =0; i<filetypes.length;i++){
// if(filetypes[i]==fileend){
// isnext = true;
// break;
// }
// }
// }
// if(!isnext){
// alert("不接受此檔案型別!");
// target.value ="";
// return false;
// }
// }else{
// return false;
// }
//ie8瀏覽器下的判斷
if (isIE && !target.files) {
var filePath = target.value;
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
if(!fileSystem.FileExists(filePath)){
alert("附件不存在,請重新輸入!");
return false;
}
var file = fileSystem.GetFile (filePath);
size = file.Size / 1024;
if(size>filemaxsize){
alert("附件大小不能大於"+filemaxsize/1024+"M!");
var obj = document.getElementById('testFile') ;
obj.select();
document.selection.clear();
return false;
}
} else {
//chrome瀏覽器的檔案大小校驗
size = target.files[0].size / 1024;
if(size>filemaxsize){
alert("附件大小不能大於"+filemaxsize/1024+"M!");
target.value =""
return false;
}
}
if(size<=0){
alert("附件大小不能為0M!");
target.value ="";
return false;
}
}
</script>
</head>
<body>
<input type="file" id="testFile" name="contractFileName" style="width: 500px;" onchange="fileChange(this);"/>
</body>
</html>