//n개 파일 용량 체크(객체ID, 선택한 객체)
function checkFileSize( fileId, select_Idx ) {
var obj;
var obj_length = 3;
var fileSize = 0;
for(var i=0; i<obj_length; i++) {
obj = document.getElementById( fileId + (i+1) );
if( obj.value != "" ) {
fileSize += getFileSize( fileId, (i+1), fileSize, select_Idx );
}
}
var viewFileSize = document.getElementById("viewFileSize");
viewFileSize.innerHTML = fileSize.toFixed(2); //소수점 둘째자리까지 표시;
}
//파일 용량 체크
function getFileSize( fileId, idx, fileSizeAll, select_Idx ) {
var maxSize = 5*1024*1000; //5M 개별파일 최대 용량
var maxFilesizeAll = 10*1024*1000; //10M 전체파일 최대 용량
var fileSize;
var obj = document.getElementById(fileId+idx);
fileSizeAll = fileSizeAll*1024*1000;
if (typeof document.body.style.maxHeight != "undefined") {
//ie7이상
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFile( obj.value );
fileSize = f.size;
f = null;
fso = null;
}else {
//ie6
var img = new Image();
img.dynsrc = obj.value;
fileSize = img.fileSize;
}
if(fileSize > maxSize) {
alert("개별 파일업로드 허용용량 " + (maxSize/1024/1000) +"Mbyte를 초과하였습니다.");
fileValueReset( fileId, select_Idx );
fileSize = 0;
}else if((fileSize+fileSizeAll) > maxFilesizeAll) {
alert("전체 파일업로드 허용용량 " + (maxFilesizeAll/1024/1000) +"Mbyte를 초과하였습니다.");
fileValueReset( fileId, select_Idx );
fileSize = 0;
}else {
fileSize = Number(fileSize/1024/1000);
}
return fileSize;
}
// 첨부파일부분 리셋!!
function fileValueReset( fileId, select_Idx ) {
fileId = fileId+select_Idx;
var obj = document.getElementById(fileId);
obj.outerHTML = "<input type=\"file\" name=\""+fileId+"\" id=\""+fileId+"\" style=\"width:500px;height:20px;\" onchange=\"checkFileSize('p_file','"+select_Idx+"');\">";
}
---------------------------------------
html
<input type="file" name="p_file1" id="p_file1" style="width:500px;height:20px;" onChange="checkFileSize('p_file', '1');" />
<input type="file" name="p_file2" id="p_file2" style="width:500px;height:20px;" onChange="checkFileSize('p_file', '2');" />
<input type="file" name="p_file3" id="p_file3" style="width:500px;height:20px;" onChange="checkFileSize('p_file', '3');" />
........
........
<li>※ 개별 첨부파일 용량은 최대 5MB까지 가능합니다.</li>
<li>※ 모든 첨부파일 용량은 최대 10MB까지 가능합니다.<span id="viewFileSize">0</span> / 10MB</li>
---------------------------------------
ActiveX를 컨트롤 하는부분이기 때문에 익스플로러에서만 동작 하며, 처음 사용 시 아래와 같은 메세지가 뜬다.
"이 페이지의 ActiveX 컨트롤이 다른 부분과 상호 작용하는데 안전하지 않을 수 있습니다.
상호 작용을 허용하시겠습니까?"
해당 메세지가 안뜨도록 하기 위해선 익스플로러 설정이 필요 하다.
1. 도구>인터넷옵션>보안>신뢰할 수 있는 사이트 등록
2. 사용자 지정 수준 버튼 클릭 > 스크립팅하기 안전하지 않을 것으로 표시된 ActiveX컨트롤 초기화 및 스크립팅 > 사용선택
'JavaScript' 카테고리의 다른 글
[JavaScript] IP 유효성체크 (0) | 2013.10.18 |
---|---|
[JavaScript] SelectBox multiple (0) | 2013.10.17 |
[JavaScript] 주민번호,외국인번호,사업자번호 체크 Script (0) | 2013.08.20 |
[JavaScript] 특수키 제어 (0) | 2013.08.09 |
[JavaScript] Event Handler 정리 (0) | 2013.07.18 |