업로드 된 이미지파일의 확장자가 자동으로 붙게 하는 방법 질문입니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

업로드 된 이미지파일의 확장자가 자동으로 붙게 하는 방법 질문입니다. 정보

업로드 된 이미지파일의 확장자가 자동으로 붙게 하는 방법 질문입니다.

본문

아래의 소스 저장시.
업로드 한 이미지파일의 확장자가 붙지 않고,확장자 자체가 누락이 됩니다.
게다가 업로드한 이미지 파일의 최초 이름이 바뀌어서 숫자와영문 조합으로 업로드가 되네요!!
error.jpg 라는 이미지를 업로드 하면 d082adc2e7960c3dafe3a2227db2d65c 이렇게 변환되어 해당폴더에 업로드가 됩니다... 확장자가 어디가고 없고요...
그러므로 출력시 문제가 발생하네요...

질문!!
업로드한 이미지 최초네임을 유지하고,
저장될 이미지 뒤에 jpg나gif이미지 확장자가 자동으로 붙게 하는 방법
그리고 저장된 이미지를 보여주기 위한 호출방법!!
이렇게 세가지가 되겠네요..

질문을 하고도 수시로 적용하고 - -;; 소스코드가 바뀌는 바람에 질문도 유동성을 타네요 ㅠ_ㅠ!! 되는쪽으로 시도를 계속 해봐야 하기 때문에..흑흑흑!!

----------------------------------------------------------------------------------------------
이미지 업로드 폼 form
----------------------------------------------------------------------------------------------
<form name="form" method=post action="imgupload_updata.php" enctype="multipart/form-data">
<? echo "$mtlogo2" ?>
<input type='file' name='mt_img'><br>

<input type=submit value=업로드>

<input type=reset value=취소>

</form>


----------------------------------------------------------------------------------------------
저장될 폼
----------------------------------------------------------------------------------------------
$dir = "$g4[path]/data/file/mtimg/"; //저장될 폴더 경로(끝에 '/'슬래시 꼭 붙여주세요...^^)

$varName = "mt_img"; //이전 페이지에서 설정된 file 변수명
$allowExt = "jpg,gif,png"; //업로드 가능한 확장자 (,)콤마로 구분

$prefix = time(); //파일명 앞에 자동으로 붙을 단어



function goBack($msg='', $url='') {
  echo " ";
}


  // php.ini 파일에 설정된 upload_max_filesize 값을 이용해서 업로드 파일이 용량을 초과했는지검사
  $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;
      }

      // 파일명 생성 및 존재하는지 검사
      $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;
      }
  }



  echo "
실제파일명 : ".$_FILES[$varName][name]."
저장된 파일명 : ".$newfile;
  /*
  - 여기에 디비에 저장하는 구문을 작성합니다.
  - DB 에 저장시 두개의 파일명을 저장해야 합니다. 보안상 저장시 암호화 하여 저장하였기에 다운받을 때는 실제 파일명으로 다운 받을 수 있도록 하기 위함입니다.
  - 파일명은 실제파일명 : $_FILES[$varName][name], 저장된 파일명: $newfile 입니다.
  */
mysql_query("update $g4[mt_table] set mtlogo1 = '".$_FILES[$varName][name]."', mtlogo2 = '".$newfile."' where no = '".$no."'");
goto_url("./imgupload.php");
?>

  /*
  - 여기에 디비에 저장하는 구문을 작성합니다.
  - DB 에 저장시 두개의 파일명을 저장해야 합니다. 보안상 저장시 암호화 하여 저장하였기에 다운받을 때는 실제 파일명으로 다운 받을 수 있도록 하기 위함입니다.
  - 파일명은 실제파일명 : $_FILES[$varName][name], 저장된 파일명: $newfile 입니다.
  */
이 부분이 신경쓰이네요...
암호화를 하여 저장하였다라...하지 않고 하는 방법...으로 하면 될 것도 같은데...훔
  • 복사

댓글 전체

© SIRSOFT
현재 페이지 제일 처음으로