파일을 올릴때는 용량을 항상 체크해 주어야 한다.
왜냐하면, 파일 용량이 생각보다 엄청나게 클 수 있으므로-ㅁ-
서버가 무제한은 아니지 않은가;;ㅋㅋ
이건 뭐, 결과페이지에 들어가는 부분인데
(업로드 컴포런트를 사용하기 위해 반드시 선언해 주어야 한다. 자세한건 ASP폴더에 따로 올리겠음ㅎ)
Set uploadform = Server.CreateObject("DEXT.FileUpload")
uploadform.AutoMakeFolder = True '첨부파일 폴더 자동 생성
nFolderPath = Server.MapPath("../Attachment/work") '첨부파일 업로드될 위치 지정
uploadform.DefaultPath = nFolderPath
이와 같이 나는 업로드 컴포런트(?)를 DEXTUPLOAD를 사용하였다.
이제,
본격적으로, 파일을 받는 페이지인 make.asp 에서 어떻게 파일을 처리하는지를 보겠다.
익스플로러가 6에서 7로 넘어오면서 dynsrc가 지원되지 않는다.
그래서 버전별로 파일 용량을 체크하는 방법을 따로 두었다.
(어디에선가 퍼온것임, 뭐, 그거 응용해서 만든건데 내가 만든걸 보고 하는게 좋을것 같아서 ㅎㅎ
퍼온곳은, 게시물 어딘가에 있을 것이야 ㅋㅋ)
<script type="text/javascript">
<!--
//파일 용량 체크
function checkFileSize(obj){
var maxSize = <%=MAX_FILE_SIZE_WORK%>; // 최대 업로드 사이즈 = 10240000 (10메가)
if (typeof document.body.style.maxHeight != "undefined") {
//ie7일 경우
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFile(obj.value);
var fileSize = f.size;
f = null;
fso = null;
}
else {
//ie6일 경우
var img = new Image();
img.dynsrc = obj.value;
var fileSize = img.fileSize;
}
if(fileSize > maxSize) {
alert("파일업로드 허용용량" + <%=MAX_FILE_SIZE_MB_WORK%> +"Mbyte를 초과하였습니다.");
fileValueReset();
return;
}
}
//첨부파일 리셋
function fileValueReset(){
var fileDiv = document.getElementById("fileDiv");
fileDiv.innerHTML = "<input name=\"filAttachment\" type=\"file\" class=\"input\" onChange=\"checkFileSize(this);\">";
}
//-->
</script>
첨부파일 리셋 부분은 만약 첨부파일 크기가 설정한 최고 크기보다 너무 클 경우,
방금 첨부한 파일의 경로를 리셋시키려고 그런 것이다.
그래야 새로 또 등록할 것이지 않겠는가 ㅋㅋ
그리고, 첨부파일이 되는 부분의 FORM소스!!
이게 진짜 중요한 부분이다!!!
안적으면 작동 안된다는거~
<FORM name="frmWork" encType="multipart/form-data" method=post action="work_result.asp" onsubmit="return frmWorkChk(this)">
encType이 부분이 꼭 있어야 한다. 이게 있어야 덱스트업로드를 할 수 있다.
그리고, 첨부파일이 되는 부분(asp 파일)에 넣는 소스
<div id="fileDiv">
<INPUT class="input" type=file name="filAttachment" onchange="checkFileSize(this);">
</div>
이거는 첨부파일의 최대크기가 얼마인지 알려주는 부분 ㅋㅋ
<span class="bo_txt_orange">* 첨부파일은 <%=MAX_FILE_SIZE_MB_WORK%>MB이상 등록할 수 없습니다. </span>