회원이미지를 사업자등록증으로 변경하여 사용하려고하는데요! 채택완료

용량제한만 두고 가로세로 사이즈 제한은 안 둘 수 있는 방법 있을까요?

요즘 스마트폰이다 사진 크기가 천차만별이라서요! 업로드 버튼 클릭하고 열었을 때 용량 경고창 뜨는 기능도 붙어있습니다. + pdf도 추가하고싶은데 혹시 아시는 분 계시면 조언 부탁드립니다!

Copy
//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개

채택된 답변
+20 포인트
// 아이콘 용량이 설정값보다 이하만 업로드 가능
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 확장자를 추가해서 적용해 보세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다! 저의 경우엔 용량 말고 가로세로 사이즈 제한을 푸는게 필요했어서 해당부분 다음에서 주석처리하였습니다!

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

원본이미지 말고 이미지 리사이징 하시는것도 추천드립니다~~

진짜 핸폰이미지 용량이 어마무시할떄가 있어서 ㅎㅎ

로그인 후 평가할 수 있습니다

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

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

로그인
🐛 버그신고