파일 첨부 채택완료
파일첨부 관련인데요.
$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개
원본 파일이름이 한글이 아닌지 확인이 필요할듯 하네요.
영어이름의 파일을 올려보시고 동일한 현상인지 먼저 확인이 되어야 될거 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
첨부파일명과 확장자를 원본으로 저장을 할려면
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']);
}
이부분도 잘 못 된거 같네요
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
$dest_path = $mb_dir.'/'.$_FILES['mb_icon']['name'];
로직에 있는 저 부분 인듯 합니다만..
답변에 대한 댓글 2개
$dest_path = $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']); 이렇게는 파일명을 부르지 못하더군요....