왕초보질문입니다...ㅠㅠ 정보
왕초보질문입니다...ㅠㅠ- happytoday 자기소개 아이디로 검색 회원게시물
- 조회 1,218
- 댓글 1
본문
또다니는 소스 하나 주어서 적용하였습니다.
근데 아래건 그냥 파일 하나만 업로드 하는것이라서
여러개 한번에 업로드 할 수 없을려나 하고 한창 수술
하다가 고수님들에게 물어봅니다... ㅠㅠ
그냥 제가 지정한 폴더에 지정한 이름으로 업로드 하려 합니다...
꼭 좀 부탁 드립니다...ㅠㅠ
파일명 : test1.php
<form name="form" method=post action="test2.php" enctype="multipart/form-data">
<input type='file' name='userfile'><br>
<input type=submit value=업로드>
<input type=reset value=취소>
</form>
두번째 파일은 위에서 사용자가 업로드한 파일을 처리하는 페이지입니다.
이 파일에서 맨위에 $dir 변수는 자신의 테스트서버 환경에 맞는 폴더를 설정해 주세요.
그리고 폴더 퍼미션은 최소 707 이어야 합니다.
파일명 : test2.php
<?
$dir = "upload/"; //저장될 폴더 경로(끝에 '/'슬래시 꼭 붙여주세요...^^)
$varName = "userfile"; //이전 페이지에서 설정된 file 변수명
$allowExt = "jpg,gif,png"; //업로드 가능한 확장자 (,)콤마로 구분
$dir = "upload/"; //저장될 폴더 경로(끝에 '/'슬래시 꼭 붙여주세요...^^)
$varName = "userfile"; //이전 페이지에서 설정된 file 변수명
$allowExt = "jpg,gif,png"; //업로드 가능한 확장자 (,)콤마로 구분
$prefix = time(); //파일명 앞에 자동으로 붙을 단어
function goBack($msg='', $url='') {
echo "<script>";
if($msg) echo 'alert("'.$msg.'");';
if($url) echo 'location.replace("'.$url.'");';
else echo 'history.go(-1);';
echo "</script>";
}
echo "<script>";
if($msg) echo 'alert("'.$msg.'");';
if($url) echo 'location.replace("'.$url.'");';
else echo 'history.go(-1);';
echo "</script>";
}
if($_FILES[$varName][name] && $_FILES[$varName][error] == 0) {
// $dir 폴더가 지정됐고, 사용가능 한지 검사
if(!$dir) {
goBack("업로드 폴더가 지정되지 않았습니다.");
exit;
}
if(!is_writable($dir)) {
goBack("업로드 폴더 권한을 확인해 주세요.");
exit;
}
// $dir 폴더가 지정됐고, 사용가능 한지 검사
if(!$dir) {
goBack("업로드 폴더가 지정되지 않았습니다.");
exit;
}
if(!is_writable($dir)) {
goBack("업로드 폴더 권한을 확인해 주세요.");
exit;
}
// php.ini 파일에 설정된 upload_max_filesize 값을 이용해서 업로드 파일이 용량을 초과했는지검사
$allowSize = intval(substr(ini_get(upload_max_filesize),0,-1)) * 1024 * 1024;
if($allowSize < $_FILES[$varName][size]) {
goBack("파일 용량이 허용된 용량을 초과했습니다.");
exit;
}
$allowSize = intval(substr(ini_get(upload_max_filesize),0,-1)) * 1024 * 1024;
if($allowSize < $_FILES[$varName][size]) {
goBack("파일 용량이 허용된 용량을 초과했습니다.");
exit;
}
// 정상적인 방법으로 업로드 된 파일인지 검사 후 정상이면 파일 업로드 처리
if(is_uploaded_file($_FILES[$varName][tmp_name])) {
// 확장자 검사
$ext = substr(strrchr($_FILES[$varName][name],"."),1);
if($ext) {
$allow = explode(",",$allowExt);
if(is_array($allow)) $check = in_array($ext,$allow);
else $check = ($ext == $allow) ? true : false;
}
if(!$ext || !$check) {
goBack("업로드 불가능한 확장자 입니다.");
exit;
}
if(is_uploaded_file($_FILES[$varName][tmp_name])) {
// 확장자 검사
$ext = substr(strrchr($_FILES[$varName][name],"."),1);
if($ext) {
$allow = explode(",",$allowExt);
if(is_array($allow)) $check = in_array($ext,$allow);
else $check = ($ext == $allow) ? true : false;
}
if(!$ext || !$check) {
goBack("업로드 불가능한 확장자 입니다.");
exit;
}
// 파일명 생성 및 존재하는지 검사
$newfile = md5($prefix.$_FILES[$varName][name]);
if(file_exists($dir.$newfile)) {
goBack("같은이름의 화일이 있습니다. 화일명을 변경하고 업로드 하시기 바랍니다.");
exit;
}
$newfile = md5($prefix.$_FILES[$varName][name]);
if(file_exists($dir.$newfile)) {
goBack("같은이름의 화일이 있습니다. 화일명을 변경하고 업로드 하시기 바랍니다.");
exit;
}
// $dir 에 파일 저장
if(!move_uploaded_file($_FILES[$varName][tmp_name], $dir.$newfile)) {
goBack("파일 업로드에 실패했습니다.");
exit;
}
if(!chmod($dir.$newfile,0707)) {
goBack("퍼미션변경에 실패했습니다.");
exit;
}
}
if(!move_uploaded_file($_FILES[$varName][tmp_name], $dir.$newfile)) {
goBack("파일 업로드에 실패했습니다.");
exit;
}
if(!chmod($dir.$newfile,0707)) {
goBack("퍼미션변경에 실패했습니다.");
exit;
}
}
echo "<br>실제파일명 : ".$_FILES[$varName][name]."<br>저장된 파일명 : ".$newfile;
/*
- 여기에 디비에 저장하는 구문을 작성합니다.
- DB 에 저장시 두개의 파일명을 저장해야 합니다. 보안상 저장시 암호화 하여 저장하였기에 다운받을 때는 실제 파일명으로 다운 받을 수 있도록 하기 위함입니다.
- 파일명은 실제파일명 : $_FILES[$varName][name], 저장된 파일명: $newfile 입니다.
- 예:mysql_query("update table set real_file_name = '"$_FILES[$varName][name]"', new_file_name = '".$newfile."' where no = '".$no."'");
*/
}
?>
/*
- 여기에 디비에 저장하는 구문을 작성합니다.
- DB 에 저장시 두개의 파일명을 저장해야 합니다. 보안상 저장시 암호화 하여 저장하였기에 다운받을 때는 실제 파일명으로 다운 받을 수 있도록 하기 위함입니다.
- 파일명은 실제파일명 : $_FILES[$varName][name], 저장된 파일명: $newfile 입니다.
- 예:mysql_query("update table set real_file_name = '"$_FILES[$varName][name]"', new_file_name = '".$newfile."' where no = '".$no."'");
*/
}
?>
댓글 전체
http://sir.co.kr/bbs/tb.php/g4_tiptech/7405
이걸 한번 사용해보세요
이걸 한번 사용해보세요