웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
중복파일 검사 후 (숫자)달기...
2006.04.20 17:41
제로보드 보면서.. 이것 저것 해보면서 공부하는 학생(?)입니다.
윈도 중복파일 생기면 filename(num).exe 생기듯이..;;
만들어 봤습니다.;
//이건 중복 체크해서 중복이면 파일명(숫자).확장자 로 만들어 주는..;;
function same_files_check($savedir,$files_name){ //$savedir : 경로 // $files_name : 파일이름
$same1_file_exist = file_exists($savedir."/".$files_name); //같은 파일이 있나 검사합니다.
if($same1_file_exist) { //같은 파일이 있으면
//pathinfo (PHP 4 >= 4.0.3, PHP 5)//
$path_parts=pathinfo($files_name); //pathinfo 이용해서
$upload_ckeck=$path_parts[extension]; //확장자만 변수에 저장
$temp_names=basename($files_name,".".$path_parts[extension]); //확장자와 확장자앞의 "."마침표 제거한 파일명을 변수에 저장
$file1_exist = $same1_file_exist; //$same1_file_exist <= 1을 $file1_exist <= 1 저장
$i=0; //while 돌릴때 쓸라구 만듬
while($file1_exist){ // 같은 파일이 없을때 가지 돌기..
$i++; //돌때마다 1씩 더하기
$file1 = $temp_names."(".$file1_exist.").".$upload_check; //더 한 값 적용
$file1_exist = file_exists($savedir."/".$file1); // 적용한거 또 비교 같은 파일 있나
if($file1_exist==1) $file1_exist=$file1_exist+$i; // 같은 파일 있으면 누적된 $i값이랑 $file1_exist값이랑 더 함.
}
}else{
$file1 = "$files_name"; //중복 파일이 없으면 원래 파일명을 $file1에 저장
}
return $file1; //중복파일 있나 없나 검사 끝난 파일이름 리턴
}
테클 ㄳ히 받겠습니다.
많은 테클 부탁드립니다.
수정해야 될 부분도..;; 좀 짧게 어캐 안되낭..;;
그럼 좋은 하루 되시고~ 항상 행복하시길~
[결과1]
abc/123.jpg 있는데..
123.jpg를 올리려고 하면 자동으로 123(1).jpg 로 파일명을 리턴합니다.
[결과2]
abc/123.jpg
abc/123(1).jpg
abc/123(2).jpg
abc/123(3).jpg
abc/123(4).jpg
abc/123(5).jpg
abc/123(6).jpg
이 있을때...123.jpg를 업로드 할 경우 123(7).jpg로 파일명을 리턴합니다.
[결과3]
abc/123.jpg
abc/123(1).jpg
abc/123(2).jpg
abc/123(3).jpg
abc/123(4).jpg
abc/123(5).jpg
abc/123(6).jpg
이 있을때 1234.jpg를 업로드 할 경우 1234.jpg 를 리턴함..-0-;;;
ㅋ.ㅋ
윈도 중복파일 생기면 filename(num).exe 생기듯이..;;
만들어 봤습니다.;
//이건 중복 체크해서 중복이면 파일명(숫자).확장자 로 만들어 주는..;;
function same_files_check($savedir,$files_name){ //$savedir : 경로 // $files_name : 파일이름
$same1_file_exist = file_exists($savedir."/".$files_name); //같은 파일이 있나 검사합니다.
if($same1_file_exist) { //같은 파일이 있으면
//pathinfo (PHP 4 >= 4.0.3, PHP 5)//
$path_parts=pathinfo($files_name); //pathinfo 이용해서
$upload_ckeck=$path_parts[extension]; //확장자만 변수에 저장
$temp_names=basename($files_name,".".$path_parts[extension]); //확장자와 확장자앞의 "."마침표 제거한 파일명을 변수에 저장
$file1_exist = $same1_file_exist; //$same1_file_exist <= 1을 $file1_exist <= 1 저장
$i=0; //while 돌릴때 쓸라구 만듬
while($file1_exist){ // 같은 파일이 없을때 가지 돌기..
$i++; //돌때마다 1씩 더하기
$file1 = $temp_names."(".$file1_exist.").".$upload_check; //더 한 값 적용
$file1_exist = file_exists($savedir."/".$file1); // 적용한거 또 비교 같은 파일 있나
if($file1_exist==1) $file1_exist=$file1_exist+$i; // 같은 파일 있으면 누적된 $i값이랑 $file1_exist값이랑 더 함.
}
}else{
$file1 = "$files_name"; //중복 파일이 없으면 원래 파일명을 $file1에 저장
}
return $file1; //중복파일 있나 없나 검사 끝난 파일이름 리턴
}
테클 ㄳ히 받겠습니다.
많은 테클 부탁드립니다.
수정해야 될 부분도..;; 좀 짧게 어캐 안되낭..;;
그럼 좋은 하루 되시고~ 항상 행복하시길~
[결과1]
abc/123.jpg 있는데..
123.jpg를 올리려고 하면 자동으로 123(1).jpg 로 파일명을 리턴합니다.
[결과2]
abc/123.jpg
abc/123(1).jpg
abc/123(2).jpg
abc/123(3).jpg
abc/123(4).jpg
abc/123(5).jpg
abc/123(6).jpg
이 있을때...123.jpg를 업로드 할 경우 123(7).jpg로 파일명을 리턴합니다.
[결과3]
abc/123.jpg
abc/123(1).jpg
abc/123(2).jpg
abc/123(3).jpg
abc/123(4).jpg
abc/123(5).jpg
abc/123(6).jpg
이 있을때 1234.jpg를 업로드 할 경우 1234.jpg 를 리턴함..-0-;;;
ㅋ.ㅋ
댓글 4
-
이태라
2006.04.21 08:01
-
한치근
2006.04.21 14:37
이태라 // 오~ 짧은걸루 갔다 써야지 ㅍ.ㅍ
왠지 살 빠진 느낌이랄까? ㅍ.ㅍ
건강하게 삽시다. ㅋ.ㅋ -
이태라
2006.04.27 09:31
지금 다시 보니까 필요없는 부분이 있었네요. 3줄이 빠집니다..;; 그래서 빈줄까지 11줄..
솔직히 $dir 변수를 체크해서 끝에 슬래쉬가 없으면 붙여주는게 있으면 좋겠죠.
예를들면 지금 테스트없이 그냥 적어보는건데 if ($dir{strlen($dir)-1}!='/') $dir.= '/';
그래서 while (file_exists($dir . '/' . $filename)) => while (file_exists($dir . $filename)) 로 고치면
약간의 에러검사도 되고 코드도 깔끔해질듯...
function check_dup_filename($filename, $dir='.')
{
$num = 1;
$extension = substr($filename, strrpos($filename, '.'));
$basename = basename($filename, $extension);
while (file_exists($dir . '/' . $filename))
$filename = $basename . '(' . $num++ . ')' . $extension;
return $filename;
} -
짱돌
2007.01.02 18:17
하하 좋네요 감사합니다..
제목 | 글쓴이 | 날짜 |
---|---|---|
[PHP 동영상강의] 34. 자료를 수정해보자. [8] | 서기 | 2006.01.14 |
[PHP 동영상강의] 35. 사용자 정의함수의 사용 [8] | 서기 | 2006.01.16 |
[PHP 동영상강의] 36. 사용자 정의함수 심화학습 [8] | 서기 | 2006.01.21 |
[PHP 동영상강의] 37. 기본적인 페이징 처리하기 [7] | 서기 | 2006.01.21 |
[PHP 동영상강의] 38. 삭제시 비밀번호 물어보기 [6] | 서기 | 2006.01.26 |
[PHP 동영상강의] 39. 회원가입/로그인 처리 [8] | 서기 | 2006.02.06 |
[PHP 동영상강의] 40. 파일의 업로드 [7] | 서기 | 2006.02.27 |
[PHP 동영상강의] 41. 추천사이트(북마크)프로그램 만들기 [4] | 서기 | 2006.02.27 |
[PHP 동영상강의] 42. 세션의 사용 [4] | 서기 | 2006.03.02 |
[PHP 동영상강의] 43. 공용함수의 제작/쿠키로그인(보안) [4] | 서기 | 2006.03.16 |
[PHP 동영상강의] 44. 즐겨찾기 제작하기 [7] | 서기 | 2006.03.21 |
[PHP 동영상강의] 45. 우편번호 검색기 제작해보기 [12] | 서기 | 2006.03.30 |
[PHP 동영상강의] 46. 다중검색기 제작해보기 [8] | 서기 | 2006.04.06 |
유용한 PHP성능 개선을 위한 팁 [4] | 이태라 | 2006.04.11 |
네이버 openapi 사용하여 실시간 인기검색어 보여주기 [3] | 유창화 | 2006.04.13 |
네이버 openapi 사용하여 한국어사전 만들기 | 유창화 | 2006.04.13 |
네이버 openapi 사용하여 쇼핑검색 만들기 [3] | 유창화 | 2006.04.13 |
올블로그(http://www.allblog.net/Home/) 명예의 전당글 가져오기 [2] | 유창화 | 2006.04.17 |
올블로그 명예의 전당글 가져오기 (캐쉬기능추가) [2] | 유창화 | 2006.04.17 |
중복파일 검사 후 (숫자)달기... [4] | 한치근 | 2006.04.20 |
같은 기능인데 디렉토리 변수만 뒤로 넘기고 기본 값을 설정해보았습니다.. ^^;
function check_dup_filename($filename, $dir='.')
{
$num = 0;
$extension = substr($filename, strrpos($filename, '.'));
$basename = basename($filename, $extension);
while (file_exists($dir . '/' . $filename)) {
if (++$num) {
$filename = $basename . '(' . $num . ')' . $extension;
}
}
return $filename;
}