첨부파일 용량이 설정보다 크다면 작성중이던 글쓰기로 돌아가기

첨부파일 용량이 설정보다 크다면 작성중이던 글쓰기로 돌아가기

QA

첨부파일 용량이 설정보다 크다면 작성중이던 글쓰기로 돌아가기

답변 2

본문

항상 도움 주시는 분들께 감사합니다.

 

그누보드5 기본은 첨부파일용량이 게시판설정용량보다 크면 안내문구 띄우고 첨부시키지 않도록 되어있는데..무조건 파일은 받아야하는 게시판을 제작중이라 제목그대로 첨부용량이 크면 경고 후 다시 작성중이던 내용으로(입력한 내용은 그대로 있어야합니다.) 가는방법이 있을까요?

 

짧은 지식으론 이미 폼내용이 넘어가버리면 힘들듯한데..작성페이지에서 검사하는 스크립트같은거라도 있을까요??

이 질문에 댓글 쓰기 :

답변 2


<script type="text/javascript">
function chkFileSize() {
   var f = document.getElementById("test").files[0];
   if(f.size > 100000) {
      alert("정해진 용량보다 큼");
      return false;
   }
}
</script>
<input type="file" name="test" id="test" onchange="chkFileSize()">

이런 식으로 사용자단에서 한 번 스크립트로 체크하시면 될 것 같네요.

다만 file api는 ie10 이상부터 지원을 하는지라 9 이하는 사용 불가능합니다.

https://developer.mozilla.org/en/docs/Web/API/File 

for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {
    $upload[$i]['file']     = '';
    $upload[$i]['source']   = '';
    $upload[$i]['filesize'] = 0;
    $upload[$i]['image']    = array();
    $upload[$i]['image'][0] = '';
    $upload[$i]['image'][1] = '';
    $upload[$i]['image'][2] = '';

    // 삭제에 체크가 되어있다면 파일을 삭제합니다.
    if (isset($_POST['bf_file_del'][$i]) && $_POST['bf_file_del'][$i]) {
        $upload[$i]['del_check'] = true;

        $row = sql_fetch(" select bf_file from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_no = '{$i}' ");
        @unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row['bf_file']);
        // 썸네일삭제
        if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {
            delete_board_thumbnail($bo_table, $row['bf_file']);
        }
    }
    else
        $upload[$i]['del_check'] = false;

    $tmp_file  = $_FILES['bf_file']['tmp_name'][$i];
    $filesize  = $_FILES['bf_file']['size'][$i];
    $filename  = $_FILES['bf_file']['name'][$i];
    $filename  = get_safe_filename($filename);

    // 서버에 설정된 값보다 큰파일을 업로드 한다면
    if ($filename) {
        if ($_FILES['bf_file']['error'][$i] == 1) {
            $file_upload_msg .= '\"'.$filename.'\" 파일의 용량이 서버에 설정('.$upload_max_filesize.')된 값보다 크므로 업로드 할 수 없습니다.\\n';
            continue;
        }
        else if ($_FILES['bf_file']['error'][$i] != 0) {
            $file_upload_msg .= '\"'.$filename.'\" 파일이 정상적으로 업로드 되지 않았습니다.\\n';
            continue;
        }
    }

 

이런 소스가 이미 있습니다 하지만 이소스를 가공해서 write_update.php 상단에 삽입 해야합니다 

대강 write_update.php에 말씀하신 소스를 손봐야 할 것같긴 했는데 역시나네요...프로그래머가 아닌 저로선...불가능에 가깝겠군요..ㅠㅠ

확인해보니 그누4부터 그랬던것같은데..사실 이런 형태가 좀 문제가 있어보이는건 저만 그런걸지..;;

당연히 첨부파일이 설정보다크면 다시올리도록 유도하는게 맞는것같은데..그냥 파일만 삭제하고 넘겨버리는건 좀 이해가 안되네요.

열린이글님 저번에도 그렇고 답변 정말 감사합니다.^^

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 8
© SIRSOFT
현재 페이지 제일 처음으로