채택완료

첨부파일 설정한 용량보다 크면

2024-05-10 (금) 21:54:29 8,560

첨부파일이 설정한 용량보다 크면 글 등록이 안되는 줄 알았는데요~

아래와 같이 경고창을 띄우고 (첨부없는 상태로) 글 작성이 되더라구요.

경고창 뜨고 "글 작성이 안되도록" 할 수도 있을까요? 

전 return 넣으면 되는 줄 알았는데 아닌 것 같더라구요~

Copy
// bbs/ write_update.php

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

답변 3개 / 댓글 3개

채택된 답변
+20 포인트
2024-05-10 (금) 22:38:12

이 단계는 게시글을 insert 한 후 실행 될 것입니다.
첨부파일 실행되는 부분을 맨위로 하면 문제가 등록되지 않고 되돌아 가도록 하는것 가능 할 것입니다.
bbs/write_update.php

아래 부분을 위쪽으로 적당한 곳에 옮기세요....

Copy
$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';
                $redirect_url = './board.php?bo_table=XXXX 또는 게시물 읽기로 해당페이지로 되돌아 가는 링크를 넣음';
                alert($file_upload_msg, $redirect_url);
                exit;
                continue;
            }
            else if ($_FILES['bf_file']['error'][$i] != 0) {
                $file_upload_msg .= '\"'.$filename.'\" 파일이 정상적으로 업로드 되지 않았습니다.\\n';
                $redirect_url = './board.php?bo_table=XXXX 또는 게시물 읽기로 해당페이지로 되돌아 가는 링크를 넣음';
                alert($file_upload_msg, $redirect_url);
                exit;
                continue;
            }
        }

답변에 대한 댓글 2개

감사합니다 설국열차님!!!!! 해보겠습니다!
저도 이방법이 무조건 맞다고 생각했는데요 ;;; 의외로 되지 않습니다. 값 넣기전에 거르면 될 것 같은데 이상하네용;;;
2024-05-11 (토) 02:45:25

이 단계는 게시글을 insert 한 후 실행 될 것입니다.
첨부파일 실행되는 부분을 맨위로 하면 문제가 등록되지 않고 되돌아 가도록 하는것 가능 할 것입니다.
bbs/write_update.php

아래 부분을 위쪽으로 적당한 곳에 옮기세요....

Copy
if(isset($_FILES['bf_file']['name']) && is_array($_FILES['bf_file']['name'])) {
        for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {

            $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';
                    $redirect_url = './board.php?bo_table=XXXX 또는 게시물 읽기로 해당페이지로 되돌아 가는 링크를 넣음';
                    alert($file_upload_msg, $redirect_url);
                    exit;
                    continue;
                }
                else if ($_FILES['bf_file']['error'][$i] != 0) {
                    $file_upload_msg .= '\"'.$filename.'\" 파일이 정상적으로 업로드 되지 않았습니다.\\n';
                    $redirect_url = './board.php?bo_table=XXXX 또는 게시물 읽기로 해당페이지로 되돌아 가는 링크를 넣음';
                    alert($file_upload_msg, $redirect_url);
                    exit;
                    continue;
                }
            }
        }
    }

시간이 없어서 제대로 못 봤는데 빠진 부분이 있습니다.
위에 처럼 하면 아라 될 것입니다.

답변에 대한 댓글 1개

와... 형님 절 받으세요 Orz

미래에도 이 자료를 찾으시는 분이 많을 것 같습니다. 감사합니다

헉 요게 생각보다 큰 일이었네요.   찾아보니 요런 내용이 있었습니다.

https://sir.kr/qa/124982

제 생각에도 위 질문자님 말처럼

첨부파일의 용량이 제한 해놓은 용량보다 크면~~  글을 다시 작성하도록 유도 하는게 맞는 것 같은데.

첨부파일은 무시되면서 글이 올라가야 하는 어쩔 수 없는 이유가 있었을지도 모르겠습니다!!

대신 글 작성완료 전에  첨부파일 용량 체크를 해서 걸러내면 되지만 <<  이게 또... 

특정 안드로이드 버전에서 보안상 문제를 일으키더라구요 ㅠㅠ  구글 이놈들..

답변을 작성하려면 로그인이 필요합니다.