昨天,今天,這兩天的時間在研究一個問題,如何在用戶端對上傳的檔案進行大小限制。在網上有搜了很久。Firefox下可以直接獲得上傳檔案的大小進行判斷:fileupload.files[0].fileSize;
ie下就不同了,首先需要獲得本地檔案的路徑,開啟安全設定ActiveX功能後,才可以擷取檔案大小,進行判斷,具體代碼如下:
function checkFileSize(){
var agent = window.navigator.userAgent;
var fileupload = document.getElementById("upfile");
var isIE7 = agent.indexOf('MSIE 7.0') != -1;
var isIE8 = agent.indexOf('MSIE 8.0') != -1;
var maxSize = 2000000;
try{
//Firefox擷取路徑
if (agent.indexOf("Firefox") >= 1) {
var fileSize = fileupload.files[0].fileSize;
} else if (isIE7 || isIE8) { //IE7和IE8獲得檔案路徑
fileupload.select();
filepath = document.selection.createRange().text;
var aa = new ActiveXObject("Scripting.FileSystemObject");
var fileSize = aa.GetFile(filepath).size;
} else { //IE6獲得檔案路徑
filepath = fileupload.value;
var aa = new ActiveXObject("Scripting.FileSystemObject");
var fileSize = aa.GetFile(filepath).size;
}
if(fileSize > maxSize) {
alert("上傳檔案不可超過2MB!");
return false;
}
}catch(e){
alert("請修改IE瀏覽器ActiveX安全設定為啟用~!");
return false;
}
return true;
}
總的來說不太理想,如果客戶去用了,還需要去開啟什麼ActiveX功能,期待更好更簡潔的方法出現,讓使用者用著更省心。