파일 첨부

파일 첨부

QA

파일 첨부

본문

파일첨부 관련인데요.

 

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

 

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

 

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

 

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

 

 


// 첨부파일
$mb_dir = G5_DATA_PATH.'/member/'.$mb_id;
 
// 파일 삭제
if (isset($_POST['del_mb_icon'])) {
    @unlink($mb_dir.'/'.$_FILES['mb_icon']['name']);
}
 
$msg = "";
 
// 파일 업로드
$mb_icon = '';
if (isset($_FILES['mb_icon']) && is_uploaded_file($_FILES['mb_icon']['tmp_name'])) {
    if (preg_match("/(\.ppt|pptx|xls|docx)$/i", $_FILES['mb_icon']['name'])) {
        // 아이콘 용량이 설정값보다 이하만 업로드 가능
        if ($_FILES['mb_icon']['size'] <= $config['cf_member_icon_size']) {
            @mkdir($mb_dir, G5_DIR_PERMISSION);
            @chmod($mb_dir, G5_DIR_PERMISSION);
            $dest_path = $mb_dir.'/'.$_FILES['mb_icon']['name'];
            move_uploaded_file($_FILES['mb_icon']['tmp_name'], $dest_path);
			chmod($dest_path, G5_FILE_PERMISSION);
            
 
        } else {
            $msg .= '관련서류를 '.number_format($config['cf_member_icon_size']).'바이트 이하로 업로드 해주십시오.';
        }
 
    } else {
        $msg .= $_FILES['mb_icon']['name'].'은(는) 문서파일이 아닙니다.';
    }
}

이 질문에 댓글 쓰기 :

답변 5

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

 

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

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

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

 

$dest_path = $mb_dir.'/'.$mb_id.'.gif'; 하면 저장되고
$dest_path = $mb_dir.'/'.$_FILES['mb_icon']['name']; 게 하면 저장이 안되고...머가 문젠지 모르겠네요..

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

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

 

// 파일 삭제

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

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

}

 

이부분도 잘 못 된거 같네요

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

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

$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']); 이렇게는 파일명을 부르지 못하더군요....

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

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

 

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

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

 

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

 

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

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

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

 

그래야 

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

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

 

참고 소스로는

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

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

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

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

 

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

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

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 127
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT