회원이미지를 사업자등록증으로 변경하여 사용하려고하는데요!
본문
용량제한만 두고 가로세로 사이즈 제한은 안 둘 수 있는 방법 있을까요?
요즘 스마트폰이다 사진 크기가 천차만별이라서요! 업로드 버튼 클릭하고 열었을 때 용량 경고창 뜨는 기능도 붙어있습니다. + pdf도 추가하고싶은데 혹시 아시는 분 계시면 조언 부탁드립니다!
//register_form_update.php
<script>
document.addEventListener('DOMContentLoaded', function() {
const iconInput = document.getElementById('reg_mb_icon');
const imgInput = document.getElementById('reg_mb_img');
if (iconInput) {
iconInput.addEventListener('change', function() {
const maxIconSize = <?php echo $config['cf_member_icon_size'] ?>;
checkFileSize(this, maxIconSize);
});
}
if (imgInput) {
imgInput.addEventListener('change', function() {
const maxImgSize = <?php echo $config['cf_member_img_size'] ?>;
checkFileSize(this, maxImgSize);
});
}
function checkFileSize(fileInput, maxSize) {
if (fileInput.files.length === 0) {
return;
}
const fileSize = fileInput.files[0].size;
if (fileSize > maxSize) {
// 바이트(Byte)를 킬로바이트(KB)로 변환
const maxSizeKB = (maxSize / 1024).toLocaleString();
// 경고 메시지에 동적으로 변환된 용량 표시
alert(maxSizeKB + 'KB 이하만 업로드 가능합니다.');
fileInput.value = ''; // 파일 선택 취소
}
}
});
</script>
<li class="reg_mb_img_file">
<label for="reg_mb_img" class="frm_label">
사업자등록증 첨부
<button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button>
<span class="tooltip">이미지 크기는 가로 <?php echo $config['cf_member_img_width'] ?>픽셀, 세로 <?php echo $config['cf_member_img_height'] ?>픽셀 이하로 해주세요.<br>
gif, jpg, png파일만 가능하며 용량 <?php echo number_format($config['cf_member_img_size']) ?>바이트 이하만 등록됩니다.</span>
</label>
<input type="file" name="mb_img" id="reg_mb_img">
<?php if ($w == 'u' && file_exists($mb_img_path)) { ?>
<img src="<?php echo $mb_img_url ?>" alt="사업자등록증 첨부">
<input type="checkbox" name="del_mb_img" value="1" id="del_mb_img">
<label for="del_mb_img" class="inline">삭제</label>
<?php } ?>
</li>
//register_form_update.php
// 회원 프로필 이미지
if( $config['cf_member_img_size'] && $config['cf_member_img_width'] && $config['cf_member_img_height'] ){
$mb_tmp_dir = G5_DATA_PATH.'/member_image/';
$mb_dir = $mb_tmp_dir.substr($mb_id,0,2);
if( !is_dir($mb_tmp_dir) ){
@mkdir($mb_tmp_dir, G5_DIR_PERMISSION);
@chmod($mb_tmp_dir, G5_DIR_PERMISSION);
}
// 아이콘 삭제
if (isset($_POST['del_mb_img'])) {
@unlink($mb_dir.'/'.$mb_icon_img);
}
// 회원 프로필 이미지 업로드
$mb_img = '';
if (isset($_FILES['mb_img']) && is_uploaded_file($_FILES['mb_img']['tmp_name'])) {
$msg = $msg ? $msg."\\r\\n" : '';
if (preg_match($image_regex, $_FILES['mb_img']['name'])) {
// 아이콘 용량이 설정값보다 이하만 업로드 가능
if ($_FILES['mb_img']['size'] <= $config['cf_member_img_size']) {
@mkdir($mb_dir, G5_DIR_PERMISSION);
@chmod($mb_dir, G5_DIR_PERMISSION);
$dest_path = $mb_dir.'/'.$mb_icon_img;
move_uploaded_file($_FILES['mb_img']['tmp_name'], $dest_path);
chmod($dest_path, G5_FILE_PERMISSION);
if (file_exists($dest_path)) {
$size = @getimagesize($dest_path);
if (!($size[2] === 1 || $size[2] === 2 || $size[2] === 3)) { // gif jpg png 파일이 아니면 올라간 이미지를 삭제한다.
@unlink($dest_path);
} else if ($size[0] > $config['cf_member_img_width'] || $size[1] > $config['cf_member_img_height']) {
$thumb = null;
if($size[2] === 2 || $size[2] === 3) {
//jpg 또는 png 파일 적용
$thumb = thumbnail($mb_icon_img, $mb_dir, $mb_dir, $config['cf_member_img_width'], $config['cf_member_img_height'], true, true);
if($thumb) {
@unlink($dest_path);
rename($mb_dir.'/'.$thumb, $dest_path);
}
}
if( !$thumb ){
// 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
@unlink($dest_path);
}
}
//=================================================================\
}
} else {
$msg .= '회원이미지을 '.number_format($config['cf_member_img_size']).'바이트 이하로 업로드 해주십시오.';
}
} else {
$msg .= $_FILES['mb_img']['name'].'은(는) gif/jpg 파일이 아닙니다.';
}
}
}
!-->
답변 2
// 아이콘 용량이 설정값보다 이하만 업로드 가능
if ($_FILES['mb_img']['size'] <= $config['cf_member_img_size']) {
해당 부분을 주석 처리하거나 해서 사이즈 체크를 제한을 푸시고
if (preg_match($image_regex, $_FILES['mb_img']['name'])) {
$image_regex = "/(\.(gif|jpe?g|png))$/i"; 이 부분의 확장자를 추가해서 적용하셔서 처리가 가능한 부분입니다.
이 부분이 이미지 파일의 파일명 체크하는 부분인데 pdf 확장자를 추가해서 적용해 보세요
원본이미지 말고 이미지 리사이징 하시는것도 추천드립니다~~
진짜 핸폰이미지 용량이 어마무시할떄가 있어서 ㅎㅎ
답변을 작성하시기 전에 로그인 해주세요.