채택완료

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

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

요즘 스마트폰이다 사진 크기가 천차만별이라서요! 업로드 버튼 클릭하고 열었을 때 용량 경고창 뜨는 기능도 붙어있습니다. + 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개 / 댓글 1개

채택된 답변
+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개

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

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

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

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