테스트 사이트 - 개발 중인 베타 버전입니다

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

굼떠 1개월 전 조회 166

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

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

</p>

<p>//register_form_update.php</p>

<p><script></p>

<p>document.addEventListener('DOMContentLoaded', function() {</p>

<p>    const iconInput = document.getElementById('reg_mb_icon');</p>

<p>    const imgInput = document.getElementById('reg_mb_img');</p>

<p>   </p>

<p>    if (iconInput) {</p>

<p>        iconInput.addEventListener('change', function() {</p>

<p>            const maxIconSize = <?php echo $config['cf_member_icon_size'] ?>;</p>

<p>            checkFileSize(this, maxIconSize);</p>

<p>        });</p>

<p>    }</p>

<p> </p>

<p>    if (imgInput) {</p>

<p>        imgInput.addEventListener('change', function() {</p>

<p>            const maxImgSize = <?php echo $config['cf_member_img_size'] ?>;</p>

<p>            checkFileSize(this, maxImgSize);</p>

<p>        });</p>

<p>    }</p>

<p> </p>

<p>    function checkFileSize(fileInput, maxSize) {</p>

<p>        if (fileInput.files.length === 0) {</p>

<p>            return;</p>

<p>        }</p>

<p> </p>

<p>        const fileSize = fileInput.files[0].size;</p>

<p> </p>

<p>        if (fileSize > maxSize) {</p>

<p>            // 바이트(Byte)를 킬로바이트(KB)로 변환</p>

<p>            const maxSizeKB = (maxSize / 1024).toLocaleString();</p>

<p>           </p>

<p>            // 경고 메시지에 동적으로 변환된 용량 표시</p>

<p>            alert(maxSizeKB + 'KB 이하만 업로드 가능합니다.');</p>

<p>           </p>

<p>            fileInput.value = ''; // 파일 선택 취소</p>

<p>        }</p>

<p>    }</p>

<p>});</p>

<p></script></p>

<p> <li class="reg_mb_img_file"></p>

<p>                    <label for="reg_mb_img" class="frm_label"></p>

<p>                        사업자등록증 첨부</p>

<p>                        <button type="button" class="tooltip_icon"><i class="fa fa-question-circle-o" aria-hidden="true"></i><span class="sound_only">설명보기</span></button></p>

<p>                        <span class="tooltip">이미지 크기는 가로 <?php echo $config['cf_member_img_width'] ?>픽셀, 세로 <?php echo $config['cf_member_img_height'] ?>픽셀 이하로 해주세요.
</p>

<p>                        gif, jpg, png파일만 가능하며 용량 <?php echo number_format($config['cf_member_img_size']) ?>바이트 이하만 등록됩니다.</span></p>

<p>                    </label></p>

<p>                    <input type="file" name="mb_img" id="reg_mb_img"></p>

<p>   </p>

<p>                    <?php if ($w == 'u' && file_exists($mb_img_path)) {  ?></p>

<p>                    <img src="<?php echo $mb_img_url ?>" alt="사업자등록증 첨부"></p>

<p>                    <input type="checkbox" name="del_mb_img" value="1" id="del_mb_img"></p>

<p>                    <label for="del_mb_img" class="inline">삭제</label></p>

<p>                    <?php }  ?></p>

<p>               </p>

<p>                </li></p>

<p> </p>

<p>//register_form_update.php</p>

<p> </p>

<p>// 회원 프로필 이미지</p>

<p>if( $config['cf_member_img_size'] && $config['cf_member_img_width'] && $config['cf_member_img_height'] ){</p>

<p>    $mb_tmp_dir = G5_DATA_PATH.'/member_image/';</p>

<p>    $mb_dir = $mb_tmp_dir.substr($mb_id,0,2);</p>

<p>    if( !is_dir($mb_tmp_dir) ){</p>

<p>        @mkdir($mb_tmp_dir, G5_DIR_PERMISSION);</p>

<p>        @chmod($mb_tmp_dir, G5_DIR_PERMISSION);</p>

<p>    }</p>

<p> </p>

<p>    // 아이콘 삭제</p>

<p>    if (isset($_POST['del_mb_img'])) {</p>

<p>        @unlink($mb_dir.'/'.$mb_icon_img);</p>

<p>    }</p>

<p> </p>

<p>    // 회원 프로필 이미지 업로드</p>

<p>    $mb_img = '';</p>

<p>    if (isset($_FILES['mb_img']) && is_uploaded_file($_FILES['mb_img']['tmp_name'])) {</p>

<p> </p>

<p>        $msg = $msg ? $msg."\\r\\n" : '';</p>

<p> </p>

<p>        if (preg_match($image_regex, $_FILES['mb_img']['name'])) {</p>

<p>            // 아이콘 용량이 설정값보다 이하만 업로드 가능</p>

<p>            if ($_FILES['mb_img']['size'] <= $config['cf_member_img_size']) {</p>

<p>                @mkdir($mb_dir, G5_DIR_PERMISSION);</p>

<p>                @chmod($mb_dir, G5_DIR_PERMISSION);</p>

<p>                $dest_path = $mb_dir.'/'.$mb_icon_img;</p>

<p>                move_uploaded_file($_FILES['mb_img']['tmp_name'], $dest_path);</p>

<p>                chmod($dest_path, G5_FILE_PERMISSION);</p>

<p>                if (file_exists($dest_path)) {</p>

<p>                    $size = @getimagesize($dest_path);</p>

<p>                    if (!($size[2] === 1 || $size[2] === 2 || $size[2] === 3)) { // gif jpg png 파일이 아니면 올라간 이미지를 삭제한다.</p>

<p>                        @unlink($dest_path);</p>

<p>                    } else if ($size[0] > $config['cf_member_img_width'] || $size[1] > $config['cf_member_img_height']) {</p>

<p>                        $thumb = null;</p>

<p>                        if($size[2] === 2 || $size[2] === 3) {</p>

<p>                            //jpg 또는 png 파일 적용</p>

<p>                            $thumb = thumbnail($mb_icon_img, $mb_dir, $mb_dir, $config['cf_member_img_width'], $config['cf_member_img_height'], true, true);</p>

<p>                            if($thumb) {</p>

<p>                                @unlink($dest_path);</p>

<p>                                rename($mb_dir.'/'.$thumb, $dest_path);</p>

<p>                            }</p>

<p>                        }</p>

<p>                        if( !$thumb ){</p>

<p>                            // 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제</p>

<p>                            @unlink($dest_path);</p>

<p>                        }</p>

<p>                    }</p>

<p>                    //=================================================================\</p>

<p>                }</p>

<p>            } else {</p>

<p>                $msg .= '회원이미지을 '.number_format($config['cf_member_img_size']).'바이트 이하로 업로드 해주십시오.';</p>

<p>            }</p>

<p> </p>

<p>        } else {</p>

<p>            $msg .= $_FILES['mb_img']['name'].'은(는) gif/jpg 파일이 아닙니다.';</p>

<p>        }</p>

<p>    }</p>

<p>}</p>

<p>

 

 

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

답변 2개

채택된 답변
+20 포인트
플라이
1개월 전
// 아이콘 용량이 설정값보다 이하만 업로드 가능
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개

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

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

레오가
1개월 전

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

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

 

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

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

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

로그인