강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

업로드시 그림 파일명이 한글일경우 이름 자동 변경하기
작성자 : 13 김영철
등록날짜 : 2009.01.14 22:21
3,603
History

2004. 11.22  19:50분  첫 등록
태권동자님과 유메미루님이 올리신 팁에서 2가지 문제를 수정하여 등록
영문 파일이름중 띄어쓰기가 되어 있는 파일일 경우 에러 수정. 예:test ts.jpg
파일명 중간에 마침표가 있을 경우 전체 파일명이 수정되지 않는 현상수정. 예:여행.사진.나.jpg

2004. 11.25. 15:10분  1차 수정
다른 문제점이 발견됨..유닉스 동호회에 이미 여러 문제를 고쳐놓은 소스가 있어.. 얻어서 제로보드에 맞게 수정하여 등록
그림화일 이외의 한글파일 (예: 그림묶음.zip) 의 경우 확장자가 누락되는 현상수정..예:그림묶음.zip
" ' " 문자가 포함된 그림파일일 경우 인식이 되지 않는 현상수정..예: abc'abc_01.jpg

2004. 11.26  11:50분  2차 수정
user_id 가 관리자 이외에는 들어가지 않는 현상수정..

2004. 11.26  15:05분  3차 수정
파일이름 중간에 그림확장자가 들어간 한글명인 일반 파일일 경우.. 강제로 이름이 변경되는 현상 수정 예:그림묶음.jpg.zip

기본 소스를 제공해주신 유닉스 동호회 insulaun 님께 감사드립니다.

---------------------------------------------------------------

일단 기본적으로 화일의 중복을 최대한 막기위해 회원일 경우 화일이름앞에 글쓴이의 아이디가 들어가도록 하였고, 비회원일 경우 0~999 까지의 숫자가 랜덤하게 들어가도록 하였습니다.
비회원 몇십명이 한 게시판에서 완전히 동일한 시간에 글을 작성하여도 파일이름이 중복되는 것을 막기 위함입니다..

--------------------------------------------------------------

수정할 내용은 다음과 같습니다..

write_ok.php 에서 아래 부분을 찾아서 밑에 글을 추가해 주시고,,

/***************************************************************************
* 업로드가 있을때
**************************************************************************/
        if($HTTP_POST_FILES[file1]) {
                $file1 = $HTTP_POST_FILES[file1][tmp_name];
                $file1_name = $HTTP_POST_FILES[file1][name];
                $file1_size = $HTTP_POST_FILES[file1][size];
                $file1_type = $HTTP_POST_FILES[file1][type];
        }
        if($HTTP_POST_FILES[file2]) {
                $file2 = $HTTP_POST_FILES[file2][tmp_name];
                $file2_name = $HTTP_POST_FILES[file2][name];
                $file2_size = $HTTP_POST_FILES[file2][size];
                $file2_type = $HTTP_POST_FILES[file2][type];
        }

------------ 윗 글 아래에 다음을 추가

//추가 한글그림화일 이름 변경...

if($member[no]!=0) {
      $user_no=$member[no];
      $user_id_c=mysql_fetch_array(mysql_query("select user_id from $member_table where no='$user_no'"));
      $user_id_r=$user_id_c[0];
                  }
    else {
      srand(time());  // 중복 방지를 위한 램덤출력.
      $ran_c = (rand()%999);  //0~999 숫자중 랜덤 출력
      $user_id_r=$ran_c;
         }

-----------여기까지...-------

같은 wriite_ok.php 파일에서 내려가다 보면

$file1=eregi_replace("\\\\","\\",$file1);
$s_file_name1=str_replace(" ","_",$s_file_name1);
$s_file_name1=str_replace("-","_",$s_file_name1);

// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
@mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}

이 나오는데 이글 바로 밑에 다음을 붙혀 넣으시면 됩니다..


// 한글이름인 그림화일인 경우 날짜로 화일명 변환

     preg_match('/\.([^.]+)$/', $s_file_name1, $match1);
      $gfile_name1_type=$match1[1];

      if((eregi("\jpg",$gfile_name1_type))||(eregi("\gif",$gfile_name1_type))||(eregi("\bmp",$gfile_name1_type))||(eregi("\png",$gfile_name1_type))) {

      if(eregi("\jpg",$gfile_name1_type)) $temp_c1="jpg";
       elseif(eregi("\gif",$gfile_name1_type)) $temp_c1="gif";
       elseif(eregi("\bmp",$gfile_name1_type)) $temp_c1="bmp";
       else $temp_c1="png";

      if(eregi("'",$s_file_name1)) {
        $temp_name1=$user_id_r."_".time()."_01";
        $s_file_name1 = "$temp_name1.$temp_c1";
         }

      else {
     for($i2=0;$i2<strlen($s_file_name1);$i2++)
     {
       if(ord($s_file_name1[$i2])>0x80)
       {
        $temp_name1=$user_id_r."_".time()."_01";
        $s_file_name1 = "$temp_name1.$temp_c1";
        break;
        }
     }
                 }
             }


또, 조금 아래에...

$file2=eregi_replace("\\\\","\\",$file2);
$s_file_name2=str_replace(" ","_",$s_file_name2);
$s_file_name2=str_replace("-","_",$s_file_name2);

// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}

이 나오는데.. 그 바로 아래에... 다음을 붙혀 넣으시면 됩니다.


// 한글이름인 그림화일인 경우 날짜로 화일명 변환

     preg_match('/\.([^.]+)$/', $s_file_name2, $match2);
      $gfile_name2_type=$match2[1];

      if((eregi("\jpg",$gfile_name2_type))||(eregi("\gif",$gfile_name2_type))||(eregi("\bmp",$gfile_name2_type))||(eregi("\png",$gfile_name2_type))) {

      if(eregi("\jpg",$gfile_name2_type)) $temp_c2="jpg";
       elseif(eregi("\gif",$gfile_name2_type)) $temp_c2="gif";
       elseif(eregi("\bmp",$gfile_name2_type)) $temp_c2="bmp";
       else $temp_c2="png";

     if(eregi("'",$s_file_name2)) {
        $temp_name2=$user_id_r."_".time()."_02";
        $s_file_name2 = "$temp_name2.$temp_c2";
         }

        else {

     for($i2=0;$i2<strlen($s_file_name2);$i2++)
     {
       if(ord($s_file_name2[$i2])>0x80)
       {
        $temp_name2=$user_id_r."_".time()."_02";
        $s_file_name2 = "$temp_name2.$temp_c2";
        break;
        }
     }
                 }
             }


여기까지....------------------------------------



또한,, 한글파일이름이던, 영문 파일이름이던 모든 그림파일을 모두 숫자 형식으로 변경하고 싶으시면

위의 추가 팁에서 아래처럼 몇줄을 삭제하시면 됩니다.. file_name2 부분도 마찬가지로 수정..


// 한글이름인 그림화일인 경우 날짜로 화일명 변환

    preg_match('/\.([^.]+)$/', $s_file_name1, $match1);
      $gfile_name1_type=$match1[1];

      if((eregi("\jpg",$gfile_name1_type))||(eregi("\gif",$gfile_name1_type))||(eregi("\bmp",$gfile_name1_type))||(eregi("\png",$gfile_name1_type))) {

      if(eregi("\jpg",$gfile_name1_type)) $temp_c1="jpg";
       elseif(eregi("\gif",$gfile_name1_type)) $temp_c1="gif";
       elseif(eregi("\bmp",$gfile_name1_type)) $temp_c1="bmp";
       else $temp_c1="png";

//      if(eregi("'",$s_file_name1)) {
//        $temp_name1=$user_id_r."_".time()."_01";
//        $s_file_name1 = "$temp_name1.$temp_c1";
//         }

//      else {
//     for($i2=0;$i2<strlen($s_file_name1);$i2++)
//     {
//       if(ord($s_file_name1[$i2])>0x80)
//       {
        $temp_name1=$user_id_r."_".time()."_01";
        $s_file_name1 = "$temp_name1.$temp_c1";
//        break;
//        }
//     }
//                 }
             }


--------------------------------------------
또, 날짜표시를 리눅스형식이 아닌 달력형식으로 변경을 원하시면...
위의 글에서 아래 내용을 찾아서 변경해주시면 됩니다..물론 file_name2도 마찬가지 형식으로 변환해야겠죠..

$temp_name1=$user_id."_".time()."_01";   -> 이부분을 아래와 같이 변경...

$temp_name1=$user_id."_".date("Ymd_His")."_01";

초단위까지 표시하지 않으면,, 파일이름이 중복될 수가 있어서.....

-------------------------------------------
또 마지막으로... 화일이름 앞에 본인의 사이트 이름을 남기고 싶으신 분들은.

$temp_name1=$user_id."_".time()."_01";   -> 이부분을 아래와 같이 변경...

$temp_name1="site_name_".$user_id."_".time()."_01";

한글 파일이름을 변경해 주는 기능인데.. 사이트 이름을 한글로 넣으시는 분들은 없으시겠죠..^^;;;
노파심에 한가지 더... 사이트 이름에  "http://"  "/"  "\"  "빈칸"  등의 특수문자는 빼고 넣으셔야 합니다.-.-;;;

-------------------------------------------


여기 까지 입니다..

제가 초보라.. 손 가는데로 수정을 하였습니다.. 각종 테스트는 모두 해보았습니다만,,.좀더 간략화된 구문이나, 문제점을 아시는 분의 조언 부탁드립니다...  그럼..

테스트를 마친 파일이름과 그 결과는 다음과 같습니다..
abc abc.jpg -> abc_abc.jpg
abc 한글_01.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.abc.한글.jpg -> user_id_날짜_02 (그림2에 올릴경우)
abc.abc_abc.jpg -> 변화없음
한글_abc.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.zip -> 변화없음
abc'abc.jpg -> user_id_날짜_01 (그림1에 올릴경우)
한글.jpg.zip -> 변화없음

p.s  제 홈페이지는 제가 관리를 하지만, 동호회 홈이라, 테스트 용도의 이용은 삼가해주시길 부탁드립니다.. 그럼...

 

http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=22&sn1=&divpage=1&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=6525

출처 : Tong - 드렁크수달스님의 ■ PHP ■통

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3135 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3707
3134 아이피 쉽게 바꾸기 댓글3 17 미니 04.27 3704
3133 자바 스윙 단축키 설정 2 나야나 05.26 3703
3132 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3700
3131 버쳐덥을 이용한 동영상 합치기와 H.264로 2pass인코딩 M 최고의하루 01.02 3696
3130 웹프로그래밍 언어별 데이터베이스연결 (ASP편) 13 김영철 01.23 3691
3129 ncftp, ncftpget, ncftpput - 서브디렉토리 전송 13 김영철 01.29 3685
3128 모드버스 simulation 프로그램 2 가이버김 09.14 3682
3127 웹 연동으로 어디서나 가능한 일정관리 프로그램 댓글1 2 춘몽 11.22 3682
3126 GD 라이브러리란 13 김영철 01.14 3674
3125 mysql 한글 깨짐 13 김영철 01.29 3661
3124 ntdll.dll 오류 해결방법 M 최고의하루 01.12 3661
3123 [MS-SQL]동적SQL을 만들때 유의사항-1 99 단국강토 01.08 3657
3122 3D MAX 문고리만들기 10 액션쟁이 01.08 3648
3121 트랙백 13 김영철 01.13 3648
3120 플래시 저장 댓글3 2 비비드바비 04.29 3645
3119 제약조건(1) M 최고의하루 12.20 3641
3118 자판기안의 특수문자 99 단국강토 01.13 3636
3117 URL Helper 3 - 인터넷 주소 분석 2 비비드바비 04.29 3636
3116 [ Sybase ] Sybase 기본 명령어 M 최고의하루 12.18 3635
3115 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 3632
3114 제약조건(1) M 최고의하루 12.20 3630
3113 테두리에 리플(Ripple)효과 주기 10 액션쟁이 12.30 3620
3112 CPU, 메인보드, 그래픽, 사운드, 랜 최적 또는 최신 드라이버 자동연결 댓글1 2 춘몽 11.22 3620
3111 [펌] 제14강 - 방명록 만들기 III M 최고의하루 12.20 3618
3110 자바스크립트 폴더배열 가져오기 99 단국강토 01.30 3613
3109 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 3608
열람중 업로드시 그림 파일명이 한글일경우 이름 자동 변경하기 13 김영철 01.14 3604
3107 한글 키 입력 안될 때 M 운영자 12.26 3604
3106 오라클 캐릭터 셋 변경 M 최고의하루 01.12 3601
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취