게시판 첨부파일 확장자 제한

게시판 첨부파일 확장자 제한

QA

게시판 첨부파일 확장자 제한

본문

안녕하세요

특정 게시판에 첨부파일 첨부하는 확장자를 pdf만 첨부 가능하게 하고싶은데 어떻게 해야될까요..?ㅠ

 

이 질문에 댓글 쓰기 :

답변 4

update 단에서 하게 되면 사용자의 게시글이 날아갈수도 있으므로

글쓰기 단에서 1차적으로 채크해주시면 더 좋습니다.

 


    <?php for ($i=0; $is_file && $i<$file_count; $i++) { ?>
    <div class="bo_w_flie write_div">
        <div class="file_wr write_div">
            <label for="bf_file_<?php echo $i+1 ?>" class="lb_icon"><i class="fa fa-folder-open" aria-hidden="true"></i><span class="sound_only"> 파일 #<?php echo $i+1 ?></span></label>
            <input type="file" name="bf_file[]" id="bf_file_<?php echo $i+1 ?>" title="파일첨부 <?php echo $i+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" class="frm_file " accept="application/pdf">
        </div>
        <?php if ($is_file_content) { ?>
        <input type="text" name="bf_content[]" value="<?php echo ($w == 'u') ? $file[$i]['bf_content'] : ''; ?>" title="파일 설명을 입력해주세요." class="full_input frm_input" size="50" placeholder="파일 설명을 입력해주세요.">
        <?php } ?>
        <?php if($w == 'u' && $file[$i]['file']) { ?>
        <span class="file_del">
            <input type="checkbox" id="bf_file_del<?php echo $i ?>" name="bf_file_del[<?php echo $i;  ?>]" value="1"> <label for="bf_file_del<?php echo $i ?>"><?php echo $file[$i]['source'].'('.$file[$i]['size'].')';  ?> 파일 삭제</label>
        </span>
        <?php } ?>
        
    </div>
    <?php } ?>

 

베이직 스킨 기준으로 input type 이 file 인 곳에

 

1982090719_1755495833.0798.png

 

 accept="application/pdf"

 

이거하나 추가해주시면

 

1982090719_1755496062.5378.png

 

이렇게 pdf 파일이 우선 적용됩니다.

다만 셀렉트 박스를 누르면 모든파일 선택이 가능하므로

 

 


    <script>
    document.addEventListener("DOMContentLoaded", function() {
        document.querySelectorAll("input[type='file']").forEach(function(input) {
            input.addEventListener("change", function(e) {
                const file = e.target.files[0];
                if (!file) return; // 선택 안 한 경우 패스
                // 확장자 검사
                const ext = file.name.split('.').pop().toLowerCase();
                if (ext !== "pdf") {
                    alert("PDF 파일만 업로드할 수 있습니다.");
                    e.target.value = ""; // 파일 선택 비움
                }
            });
        });
    });
    </script>

 

이 스크립트 하나 넣어주시면 input file 에 들어가는 확장자를 검사해서 pdf 가 아니면 경고 후 해당 input 을 비워주게 됩니다.

 

/bbs/write_update.php

 

// 특정 게시판만 pdf 제한
if ($bo_table === '게시판아이디') {
    $filename = $_FILES['bf_file']['name'][$i];
    $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    if ($ext !== 'pdf') {
        alert("이 게시판은 PDF 파일만 첨부 가능합니다.");
    }
}

이런식으로 특정 게시판 아이디만 pdf 업로드 가능하게 처리 해주시면 되십니다.

플라이님이 힌트를 다 주셨네요.

코어를 수정 안하실려면 

스킨에 write_update.head.skin.php 파일을 만드시고

for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {

    $filename = $_FILES['bf_file']['name'][$i];
    $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    if ($ext !== 'pdf') {
        alert("이 게시판은 PDF 파일만 첨부 가능합니다.");
    }

}

해서 파일 글 등록 전에 체크를 해주시면 될 거 같습니다.

특정게시판에서만 하려면

 

<?php if(isset($bo_table) && $bo_table == 'free'){ ?>

free 보드만 적용

여기에 다 넣으세요

<?php } else { ?>

그외 보드 적용

<?php } ?>

 

이렇게 if 로 분기하시면됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 3

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT