게시판 첨부파일 확장자 제한
본문
안녕하세요
특정 게시판에 첨부파일 첨부하는 확장자를 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 인 곳에
accept="application/pdf"
이거하나 추가해주시면
이렇게 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 로 분기하시면됩니다.