조은호 홈페이지

| 한의학 정보 | 건강 정보 | 카메라와 캠코더 | 홈페이지 관련 | 컴퓨터 관련 | 디자인 세상 | 기독교 신앙 | G12/Cell | 물생활 |
| 도시 정원 | 문화 | 생활 체험 정보 | 오늘도 말씀과 함께 | 포토 겔러리 | 동영상 겔러리 |
| 조은호 정송화 (가족 홈) | 리동철 유미현 | 동사무소 |
| 용정 복지관 후원회 | 입주 홈페이지 | 사이트 맵 |


 아이디 
패스워드

 
로그인 안될 때

홈페이지 관련


전체 메뉴 목록
|| 홈페이지 내 현재 위치 ▶ 조은호 홈페이지 > 홈페이지 관련 > Php || 사이트 맵 이동(move to sitemap)

12   1/1

 내용보기

작성자


조은호 (2004-03-26 23:31:17)

홈페이지

http://www.urhelper.com

제목


업로드(upload) 구현 소스
PHP를 이용한 업로드 기능을 구현하는 소스입니다.



테스트를 위해서 두개의 파일을 만들어 보겠습니다.

업로드 소스가 필요하신 분들께 도움이 되었으면 하는 마음과

제 소스의 부족한 부분의 조언 부탁드립니다.



소스의 설명은 주석부분을 참고해 주세요...^^a



우선 첫번째 파일은 사용자가 업로드를 위한 파일을 선택하는 페이지입니다.

그냥 간단히 작성하면...



파일명 : 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"; //업로드 가능한 확장자 (,)콤마로 구분

$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>";
}



if($_FILES[$varName][name] $_FILES[$varName][error] == 0) {
   // $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;
   }

   // 정상적인 방법으로 업로드 된 파일인지 검사 후 정상이면 파일 업로드 처리
   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 "<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."'");
   */
}
?>
스팸방지코드 여기를 클릭해 주세요.    새로고침     

|| 간단한 답글 달기
:   : 위의 보안코드 입력 후 (비회원)
번호 제목 작성일 조회
12
 위지윅 에디터 종류 [54]
2011/03/18 5205
11
 GM 에디터 소스
2011/03/18 4826
10
 대용량 업로드를 위한 php.ini 설정
2010/09/14 3711
9
 사랑비 BGM 2.1 [3]
2009/11/05 3915
8
 PHP 프로그램 속도 올리는 20가지
2004/03/27 8286

 업로드(upload) 구현 소스
2004/03/26 7680
6
 다운로드(download) 구현 소스 [484]╋
2004/03/26 8129
5
 php 한글 메뉴얼 [2]
2004/03/26 6230
4
 페이지가 뜨는 속도 알아 보기.
2003/12/22 4811
3
 사랑향기 무료배포 카운터 [1]
2003/05/05 4518
2
 자기 홈 또는 서버 연지 며칠이 지났는지 알 수 있는 php 소스
2003/02/24 4009
1
 게시물 읽은 사람들 리스트 보여주기(수정) [1]
2003/01/09 3670
1

    일반 
  유투브 모바일 동영상 사이즈 링크 가로세로 비율 완벽해결 [출처] 유투브 모바... 
  SCM Music Player 
  Html 간단한 속성 
  도메인 서비스 가장 싼 업체 소개 합니다 
  구글이 지원하는 "무료 웹폰트" 
  무료 RSS 제공 사이트 및 소셜 네트워그 RSS 무료 포스팅 사이드 (추천) 
  블로그에 SNS 공유버튼 달기, 트위터 리트윗 버튼 + 페이스북 공유하기 버튼 ... 

    포토샵 
  JPG파일 여러장을 한장으로 합치기 (자동으로)  [436]╋
  [후보정] Adobe GAMMA 만가지고 모니터 셋팅하기 
  포토샵 젤리 스타일  [1]
  포토샵 100여가지의 스타일  [1]
  페이지 말린 효과를 만드는 필터 
  알아두면 유용한 73가지 포토샵팁!!  [1]
  채널의 모든것을 까발린다.  [472]╋

    Php 
  위지윅 에디터 종류  [54]
  GM 에디터 소스 
  대용량 업로드를 위한 php.ini 설정 
  사랑비 BGM 2.1  [3]
  PHP 프로그램 속도 올리는 20가지 
  업로드(upload) 구현 소스 
  다운로드(download) 구현 소스  [484]╋

    자바 
  [script] 초간단 iframe크기 자동 조절하기  [494]╋
  홈페이지를 시작페이지 설정하기 소스 
  날짜와 시간을 넣는 자바 소스입니다.. 
  도메인마다 다른 페이지로 연동되게 할수가 없나요? 
  배너를 모자이크로 슬라이드한다! 
  팝업창 바로 띄우기  [427]╋
  아이프레임 자동으로 늘어나는 자바 스크립트 

    폰트 관련 
  무료 폰트 다운로드 / 링크 사이트. 
  조선일보 명조체 
  [무료다운로드] 웹폰트(트루타입) 23종 공개합니다. 
  이른바 "웹 폰트"를 쓰지 말아야 하는 이유 
  폰트는 FontStruct에서 만들었어요! 
  웹폰트 변환 방법 
  네이버 나눔 폰트 
    제로보드 4 
  스팸 방지 - 스팸프리 
  제로보드 4에서 한글 첨부파일 다운로드시 다운로드 안되는 현상 해결방안 
  php 4.3.x 버젼 대에서 ''정상적으로 글을 작성하여 주시기 바랍니다."  [4]
  악성스크립트, 해킹등으로 괴로움을 겪는 제로보드4 이용자님들께 [펌글] 
  config.php 파일명 변경 관련 - 보안 사항 
  특정게시판, 특정요일에 7일전 게시물 전부 삭제하기 
  일정 기간이 지난 후 게시물과 파일 자동 삭제 

    제로보드 4 FAQ 
  제로보드 4 관련 정보 
  제 홈페이지에 외부 로그인을 달고 싶습니다..  [2]
  제로보드 pl2로 업그레이드를 하려면 어떻게 하나요?  [1]
  어째서 관리자의 정보는 없나요? 자기소개에 글도 안써지고;;  [1]
  나의 계정 사용 용량을 알 수 있습니까?  [1]
  내 홈의 절대 경로 확인하는 법 
  노프레임이란?  [442]╋

    제로보드 4 질문 
  제로보드에 사랑비넣기  [1]
  전체쪽지 보내기 소스 좀 알려주세요ㅠㅠ  [1]
  팝업창에 대하여  [1]
  1:1게시판(상담게시판)에 관련해 문의합니다.  [1]
  질문 있습니다. 
   파일을 올립니다.  [1]
  안녕하셨어요... 질문이 또 있어서요.  [1]

    개인 서버 만들기 
  개인용 NAS 서버 구축 01, 안 쓰는 넷북으로 자작 NAS 구축하기 
  Link Shell Extension / 윈도우즈에서 심볼릭 링크 
  홈페이지 속도 떨어뜨리는 접속 통계 사이트 
  445포트(smb) 죽이고 살리기 
  445 포트 제거하기 
   port 139, 445번 이해,차단- 라우팅 및 원격 액세스 서비스 (RAS ser... 
  HP ProLiant MicroServer 사양  [1]

제 홈페이지(조은호 홈페이지)에 오신 것을 환영합니다. 이 홈페이지는 제 개인 홈페이지로 제가 직접 관리하고 있습니다.
제 홈페이지는 비영리 홈페이지이며 자료 제공만을 목적으로만 만들어진 것이 아니라, 제 개인적인 자료 정리와 관리의 목적으로
만들어졌으므로 각 메뉴마다 충분한 자료가 없을 수도 있습니다. 인터넷을 통해 수집된 것이 많으므로 그 출처를 밝혀 놓았습니다.
혹시 저작권이나 초상권에 문제가 있는 자료의 경우 연락 주시면 삭제해 드리도록 하겠습니다.
본 홈페이지에 적용된 글꼴은 윈도우즈의 '굴림'체, '우리글닷컴'의 '우리새봄', '우리돋움90c1' 체, '(주)예쁜글씨'의 '좋은_여행가는날-웹'이며 유료로 등록 사용중입니다.

본 홈페이지에 포함되거나 게시된 이메일(email)주소가 이메일 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며,
이를 위반할 경우 정보통신망 이용촉진 및 정보보호 등에 관한 법률 등 관계 법령에 의해 형사 처벌됨을 유의하기기 바랍니다.

Copyright 2002 All right reserved          This Homepage was Designed & Programmed By Cho Eunho