파일첨부 관련인데요.
$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개 / 댓글 3개
첨부파일명과 확장자를 원본으로 저장을 할려면
1. 문제점을 알아채셨다시피 무슨 이름으로 저장되어있는지 알지 못하므로 이미지를 불러올 수가 없습니다
-- 여분필드에 화일명을 저장하고 이것을 이용해서 화일을 찾아오는 방식으로 코드를 바꾸세요
2. 다른 사람이 동일한 화일이름으로 업로드를 하게 되면 어떻게 할 것인가요?
예를들어 asdf라는 회원이 test.gif를 업로드 하고 as1234라는 회원이 test.gif를 업로드 하면???
$member['mb_id'].'.gif';
근본적으로 위와 같이 쓰게 된 이유는
해당 파일은 회원당 하나만 올린다는 가정에서 출발했습니다.
그리고 아이콘이니까 당연히 gif 이고 크기와 용량을 제한 한 것이구요.
하나 밖에 없고 아이디가 파일 이름이므로 굳이 디비에 저장할 필요가 없습니다.
그러나 웹프리존 님과 같이 할려면
일단 member 테이블의 추가 필드를 활용하시거나 새로운 필드를 생성하여
그곳에 실제 저장된 파일명을 저장해 두어야 합니다.
그래야
그 회원의 어떤파일이 그 용도로 올려져 잇는지 확인이 가능하며
출력이나 다운로드 삭제 등도 처리할수가 있습니다.
참고 소스로는
write_update.php 에서 파일 첨부 처리 부분을 참고 하시면 될것 같습니다.
그리고 질문 내용과는 상관없지만
// 파일 삭제
if (isset($_POST['del_mb_icon'])) {
@unlink($mb_dir.'/'.$_FILES['mb_icon']['name']);
}
이부분도 잘 못 된거 같네요
$dest_path = $mb_dir.'/'.$_FILES['mb_icon']['name'];
로직에 있는 저 부분 인듯 합니다만..
답변에 대한 댓글 2개
답변을 작성하려면 로그인이 필요합니다.
그런데..올라간파일을 파일업로드가 되는 페이지에서
$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']); 이렇게는 파일명을 부르지 못하더군요....