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

파일 첨부 채택완료

웹프리죤 10년 전 조회 6,054

파일첨부 관련인데요.

 

$dest_path = $mb_dir.'/'.$mb_id.'.gif';

 

이렇게 파일이름과 확장자가 고정으로 저장되어 버리는 거 말고

 

$dest_path = $mb_dir.'/'.첨부파일;

 

첨부파일명과 확장자를 원본으로 저장을 할려면 어디를수정해야 될까요

 

 

</p><p>/<span style="font-size: 11pt; line-height: 1.5;">/ 첨부파일</span></p><p>$mb_dir = G5_DATA_PATH.'/member/'.$mb_id;</p><p> </p><p>// 파일 삭제</p><p>if (isset($_POST['del_mb_icon'])) {</p><p>    @unlink($mb_dir.'/'.$_FILES['mb_icon']['name']);</p><p>}</p><p> </p><p>$msg = "";</p><p> </p><p>// 파일 업로드</p><p>$mb_icon = '';</p><p>if (isset($_FILES['mb_icon']) && is_uploaded_file($_FILES['mb_icon']['tmp_name'])) {</p><p>    if (preg_match("/(\.ppt|pptx|xls|docx)$/i", $_FILES['mb_icon']['name'])) {</p><p>        // 아이콘 용량이 설정값보다 이하만 업로드 가능</p><p>        if ($_FILES['mb_icon']['size'] <= $config['cf_member_icon_size']) {</p><p>            @mkdir($mb_dir, G5_DIR_PERMISSION);</p><p>            @chmod($mb_dir, G5_DIR_PERMISSION);</p><p>            $dest_path = $mb_dir.'/'.<span style="color: rgb(255, 0, 0);"><b>$_FILES['mb_icon']['name'];</b></span></p><p>            move_uploaded_file($_FILES['mb_icon']['tmp_name'], $dest_path);</p><p><span class="Apple-tab-span" style="white-space:pre">			</span>chmod($dest_path, G5_FILE_PERMISSION);</p><p>            </p><p> </p><p>        } else {</p><p>            $msg .= '관련서류를 '.number_format($config['cf_member_icon_size']).'바이트 이하로 업로드 해주십시오.';</p><p>        }</p><p> </p><p>    } else {</p><p>        $msg .= $_FILES['mb_icon']['name'].'은(는) 문서파일이 아닙니다.';</p><p>    }</p><p>}</p><p>

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

답변 5개

채택된 답변
+20 포인트
10년 전

원본 파일이름이 한글이 아닌지 확인이 필요할듯 하네요.

 

영어이름의 파일을 올려보시고 동일한 현상인지 먼저 확인이 되어야 될거 같습니다.

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

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

10년 전

첨부파일명과 확장자를 원본으로 저장을 할려면

1. 문제점을 알아채셨다시피 무슨 이름으로 저장되어있는지 알지 못하므로 이미지를 불러올 수가 없습니다

-- 여분필드에 화일명을 저장하고 이것을 이용해서 화일을 찾아오는 방식으로 코드를 바꾸세요

 

2. 다른 사람이 동일한 화일이름으로 업로드를 하게 되면 어떻게 할 것인가요?

예를들어 asdf라는 회원이 test.gif를 업로드 하고 as1234라는 회원이 test.gif를 업로드 하면???

 

 

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

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

10년 전

$member['mb_id'].'.gif'; 

근본적으로 위와 같이 쓰게 된 이유는

 

해당 파일은 회원당 하나만 올린다는 가정에서 출발했습니다.

그리고 아이콘이니까 당연히 gif 이고 크기와 용량을 제한 한 것이구요.

 

하나 밖에 없고 아이디가 파일 이름이므로 굳이 디비에 저장할 필요가 없습니다.

 

그러나 웹프리존 님과 같이 할려면

일단 member 테이블의 추가 필드를 활용하시거나 새로운 필드를 생성하여

그곳에 실제 저장된 파일명을 저장해 두어야 합니다.

 

그래야 

그 회원의 어떤파일이 그 용도로 올려져 잇는지 확인이 가능하며

출력이나 다운로드 삭제 등도 처리할수가 있습니다.

 

참고 소스로는

write_update.php 에서 파일 첨부 처리 부분을 참고 하시면 될것 같습니다.​

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

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

10년 전

그리고 질문 내용과는 상관없지만

 

// 파일 삭제

if (isset($_POST['del_mb_icon'])) {

    @unlink($mb_dir.'/'.$_FILES['mb_icon']['name']);

}

 

이부분도 잘 못 된거 같네요

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

답변에 대한 댓글 1개

웹프리죤
10년 전
아 감사합니다.. 영문/숫자 파일은 잘 올라가네요..한글체크 부분이 들어가야 겠네요.

그런데..올라간파일을 파일업로드가 되는 페이지에서

$mb_icon_url = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';

이렇게 불러서 삭제든 다운이든 되는건데 $member['mb_id'].'.gif'; 이 부분은 그럼 어떻게 수정되어야 할까요

$_FILES['mb_icon']['name']); 이렇게는 파일명을 부르지 못하더군요....

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

d
10년 전

$dest_path = $mb_dir.'/'.$_FILES['mb_icon']['name'];

로직에 있는 저 부분 인듯 합니다만.. 

 

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

답변에 대한 댓글 2개

웹프리죤
10년 전
네 근데 업로드가 안됩니다....해당 폴더에 파일이 들어가지를 않네요..
웹프리죤
10년 전
$dest_path = $mb_dir.'/'.$mb_id.'.gif'; 하면 저장되고
$dest_path = $mb_dir.'/'.$_FILES['mb_icon']['name']; 게 하면 저장이 안되고...머가 문젠지 모르겠네요..

원본파일명으로 저장을 시켜야 되는데..

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

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

로그인