• 회원가입
  • 로그인
  • 구글아이디로 로그인

[PHP-서기] php 40. 첨부파일 업로드 ★★★

1,716  


목차

  1. 파일 업로드 구현
  2. 파일 확장자 제한

 

파일 업로드 구현

 

1. form 태그 필수속성

 

<form action="업데이트실행파일(예: b.php)" method="post" enctype="multipart/form-data">

    <input type="file" name="hz">

    <input type="submit" value="확인"> 

</form>

 

 

2. phpinfo() 함수로 업로드 된 파일 확인하기

b.php

 

<?php phpinfo(); ?>



2. PHP Variables 영역에서 파일 정보 확인 가능. (※ 임시저장상태)
※ Ctrl + F (찾기창) 띄운 후, $_FILE 키워드로 검색

$_FILES['hz'] 배열변수 안에 아래 정보 등록

 

Array

(

    [name] => homzznag.txt

    [type] => text/plain

    [tmp_name] => C:\Users\kissh\AppData\Local\Temp\php40E6.tmp

    [error] => 0

    [size] => 791

)

 


PS1. b.php 파일에 아래 코드 넣어 바로 확인 가능.

<?php

foreach ($_FILES['hz'] as $k => $v) {

echo "파일 $k : $v <br>";

}

?>

 


PS2. b.php 파일에 아래 코드 넣어 바로 확인 가능.

 

<?php

echo "파일 name : ".$_FILES['hz']['name']."<br>";

echo "파일 type : ".$_FILES['hz']['type']."<br>";

echo "파일 tmp_name : ".$_FILES['hz']['tmp_name']."<br>";

echo "파일 error : ".$_FILES['hz']['error']."<br>";

echo "파일 size : ".$_FILES['hz']['size']."<br>";

?>

 

 

 

3. 임시파일을 실제 저장공간으로 이동시키기

b.php 파일에 아래 코드 추가

(예) /data/file 디렉토리로 이동시키기

 

<?php

// 방법1 - 업로드 파일명 그대로 사용. (보안 취약)

<?php

move_uploaded_file($_FILES['hz']['tmp_name'],'./data/file/'.$_FILES['hz']['name']);

?>

?>

 

<?php

// 방법2 - 업로드 파일명 변경 (예: fileNewName.txt) (보안 양호)

move_uploaded_file($_FILES['hz']['tmp_name'],'./data/file/fileNewName.txt');

?>

 

<?php

// 방법3 - 업로드 파일명을 날짜로 표현 (예: 14자리)

$newFileName = date('YmdHis'); // 년월일시분초

move_uploaded_file($_FILES['hz']['tmp_name'],'./data/file/'.$newFileName);

?>

 

PS. 아래 경우엔 에러 발생하니 주의.

  1. 해당 디렉토리 존재 안 한 경우
  2. 퍼미션이 707 (또는, 777) 아닌 경우

 

 

파일 확장자 제한

※ b.php 파일 상단에 아래 코드 추가

$hzfile = pathinfo($_FILES['hz']['name']);

// print_r($hzfile);

// 결과값: Array ( [dirname] => . [basename] => homzzang.txt [extension] => txt [filename] => homzzang )


switch($hzfile['extension'])

{

    case "jpg":

case "jpeg":

case "png";

    case "gif": break;


    case "": // 점(.)으로 끝나는 파일 제어

    case NULL: //확장자 없는 파일 제어

default: echo "(jpg/jpeg/png/gif) 이미지만 업로드 가능"; exit;

}

 



분류 제목
JS-서기 JQ 4강 - 허버메뉴
JS-서기 JQ 3강 - 이벤트, 이펙트 (=메서드)
JS-서기 JQ 2강 - JQUERY (제이쿼리) 다운로드, 외부링크, 기본구문
JS-서기 JQ 1강 - JQUERY (제이쿼리) 개념, CSS 선택자
JS-서기 JS 17강 - 허버메뉴만들기
JS-서기 JS 16강 - this객체, 조건분기, 속성설정
JS-서기 JS 15강 - CSS 선택자
JS-서기 JS 14강 - HTML CSS JS 혼용하기 (=getElementsBy 시리즈 = JS선택자) ★★★★★
JS-서기 JS 13강 - DOM (돔: Document Object Model 문서객체모델)
JS-서기 JS 12강 - 이벤트핸들러2 (event handler) - onload, onunload, / confi…
JS-서기 JS 11강 - 이벤트핸들러1 (event handler)
JS-서기 JS 10강 - 사용자정의함수 (조건, 경고창, 페이지이동) (function, if, alert, url,…
JS-서기 JS 9강 - 함수 제작 (= 사용자정의함수)
JS-서기 JS 8강 - for문 안쪽에 if문 사용 (= 행렬 표만들기 = 줄바꿈 = 줄바꾸기 = 줄변경 = 라인변…
JS-서기 JS 7강 - 모든 구구단 (= 중첩포문 = 이중포문 = 이단포문) (for double loop)
JS-서기 JS 6강 - 특정 구구단
JS-서기 JS 5강 - for반복문 흐름, 1~100 출력 및 합산 3
JS-서기 JS 4강 - else if 조건문, && 기호 의미
JS-서기 JS 3강 - 변수선언, prompt() 입력함수, if조건문, 사이트 이동 ★
JS-서기 JS 2강 - 변수 선언 및 출력
11/35
목록
찾아주셔서 감사합니다. Since 2012