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

업로드시 그림 파일명이 한글일경우 이름 자동 변경하기
작성자 : 13 김영철
등록날짜 : 2009.01.14 22:21
3,593
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

번호 제목 글쓴이 날짜 조회
3285 이것은 AI파일 미리보기입니다. 댓글3 M 최고의하루 01.15 3585
3284 이미지미리보기pds파일미리보기파일입니다^^ 댓글2 99 단국강토 01.14 2825
3283 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2614
3282 자판기안의 특수문자 99 단국강토 01.13 2529
3281 ntdll.dll 오류 해결방법 M 최고관리자 01.12 4390
3280 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3095
3279 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2229
3278 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2497
3277 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 2840
3276 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2390
3275 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2350
3274 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 4029
3273 이미지미리보기pds파일미리보기파일입니다^^ 99 단국강토 01.14 2445
3272 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2782
3271 공유기 차단 무력화 시키는 법 99 단국강토 01.13 3539
3270 자판기안의 특수문자 99 단국강토 01.13 2362
3269 ntdll.dll 오류 해결방법 M 최고의하루 01.12 3657
3268 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3223
3267 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2167
3266 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2484
3265 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 3307
3264 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2211
3263 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2306
3262 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3698
3261 하드,CPU,RAM 지원표 M 최고의하루 12.18 2581
3260 award bios 어워드 바이오스 설정법 M 최고의하루 12.18 3939
3259 내장 그래픽카드 죽이는 법 M 최고의하루 12.04 4877
3258 컴퓨터 조립 M 최고의하루 12.04 2828
3257 USB 버젼 속도 차이 2 천진난만 02.20 2373
3256 제가 사용하고 있는 마케팅프로그램입니다 댓글1 3 천지인 05.23 13190
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취