회원가입 이미지첨부
본문
안녕하세요 guswjd님이 하신 소스 그대로 회원가입 이미지 첨부를 넣으려고 합니다.
아래 보시면
skin 폴더의 register_form.skin.php
<tr>
<th scope="row"><label for="reg_mb_4">관련서류첨부<br>(사업자등록증)</label></th>
<td>
<span class="frm_info" style="font-size:11px">
5M 이하의 이미지파일만 등록 가능 합니다.
</span>
<input type="file" name="mb_4" id="reg_mb_4" class="frm_input">
<?php
// 첨부파일 경로
$mb_4_path = G5_DATA_PATH.'/member/'.$member['mb_id'].'/'.$member['mb_4'];
$mb_4_url = G5_DATA_URL.'/member/'.$member['mb_id'].'/'.$member['mb_4'];
if ($w == 'u' && file_exists($mb_4_path)) { ?>
<br><a href="<?=$mb_4_url ?>" target="_target"><font color="red">사업자등록증</font></a>
<input type="checkbox" name="del_mb_4" value="1" id="del_mb_4">
<label for="del_mb_4">삭제</label>
<?php } ?>
</td>
</tr>
bbs폴더의 register_form_update.php 파일에
!-->
// 첨부파일 경로 $mb_dir = G5_DATA_PATH.'/member/'.$mb_id; // 파일 삭제 체크시 $filename2 = $member['mb_4']; if (isset($_POST['del_mb_4'])) { @unlink($mb_dir.'/'.iconv("UTF-8","EUC-KR",$filename2)); $sql = " update {$g5['member_table']} set mb_4 ='' where mb_id='$mb_id'" ; sql_query($sql); } // 파일 업로드 $msg = ""; $mb_4 = ''; if (isset($_FILES['mb_4']) && is_uploaded_file($_FILES['mb_4']['tmp_name'])) { if (preg_match("/(\.gif|jpg|png|jpeg)$/i", $_FILES['mb_4']['name'])) { // 파일 용량이 설정값보다 이하만 업로드 가능 if ($_FILES['mb_4']['size'] <= $config['cf_member_icon_size']) { @mkdir($mb_dir, G5_DIR_PERMISSION); @chmod($mb_dir, G5_DIR_PERMISSION); $dest_path = $mb_dir.'/'.$_FILES['mb_4']['name']; // 수정시 기존파일 삭제 $filename2 = $member['mb_4']; @unlink($mb_dir.'/'.iconv("UTF-8","EUC-KR",$filename2)); $sql = " update {$g5['member_table']} set mb_4 ='' where mb_id='$mb_id'" ; sql_query($sql); // 파일업로드 move_uploaded_file($_FILES['mb_4']['tmp_name'], iconv("UTF-8","EUC-KR",$dest_path)); chmod(iconv("UTF-8","EUC-KR",$dest_path), G5_FILE_PERMISSION); // 파일명 여분필드에 업데이트 $filename = $_FILES['mb_4']['name']; $sql = " update {$g5['member_table']} set mb_4 ='$filename' where mb_id='$mb_id'" ; sql_query($sql); } else { $msg .= '첨부이미지를 5M 이하로 업로드 해주십시오.'; } } else { $msg .= $_FILES['mb_4']['name'].'은(는) 이미지파일이 아닙니다.'; } }
adm 폴더의 member_form.php 파일에
<tr > <th scope="row">사업자등록증</th> <td colspan="3"> <input id="mb_4" type="file" name="mb_4" class="frm_file w400"> <?php if($mb['mb_4']) { $img_path = G5_DATA_URL.'/member/'.$mb['mb_id'].'/'.$mb['mb_4']; ?> <a href="<?php echo $img_path; ?>" target="_blank"><img src="<?php echo $img_path; ?>" width="200"></a> <?php } ?> </td> </tr>
라고 입력하고 회원가입을 하면
회원정보 확인 페이지에서
뜨고
이미지없음 (주황색라인) 부분 클릭하면
Not Found
The requested URL /bbs/data/member/logo.png was not found on this server.
라고 에러창이 뜹니다.
폴더 권한 707 로 줬는데...
회원가입 설정에서 아이콘 용량도 5000000 으로 늘려주어도 안되는거 같습니다.
확인해보니 사진이름을 123.jpg숫자로 입력하면 정상적으로 나오는데
한글로 입력시 정상적으로 이미지를 못 불러드리고
db에는 정상적으로 이미지 이름이 적혀있습니다 ㅠㅠ
추가로 RedUTF8를 통해 utf-8로도 변환을 하였습니다.
고수님들 부탁드리겠습니다. ㅠㅠ
답변 1
1번 : 한글이름으로 들어가서 깨지는 상황입니다. 그래서 회원이미지는 회원아이디로
게시판은 g5_board_file에 원본이름 넣고 실제는 다른이름으로 저장해서 불러올때 처리합니다.
해결하시려면
1안) 게시판처럼 원본이름을 따로 저장하고 다운받을때 처리하는 로직을 만드시거나
2안) 한글이름파일 경로를 사용하시려면 mod_url 아파치 모듈을 추가설치 하시거나
호스팅회사에 문의하시기 바랍니다.
2번 : 이미지없음 (주황색라인) 부분 클릭하면 Not Found
The requested URL /bbs/data/member/logo.png was not found on this server.
는
<?php
if($mb['mb_4']) {
$img_path = G5_DATA_URL.'/member/'.$mb['mb_id'].'/'.$mb['mb_4'];
?>
<a href="<?php echo $img_path; ?>" target="_blank"><img src="<?php echo $img_path; ?>" width="200"></a>
<?php } ?>
를
<?php
if(is_file($_SERVER['DOCUMENT_ROOT'].'/member/'.$mb['mb_id'].'/'.$mb['mb_4'])) {
$img_path = G5_DATA_URL.'/member/'.$mb['mb_id'].'/'.$mb['mb_4'];
?>
<a href="<?php echo $img_path; ?>" target="_blank"><img src="<?php echo $img_path; ?>" width="200"></a>
<?php } ?>
으로 바꾸어 보고 테스트하시기 바랍니다.