File Handling 파일을 저장, 삭제, 복사등의 파일 처리 방법을 안내합니다.
사용 준비
File Handling을 사용하기 위해선 아래와 같이 Controller 최상단에 use 가 선언 되어야 합니다.
Controller
/app/test.php
File Handling을 수행하기 위해 새로운 인스턴스를 생성합니다.
<?php use Make\Library\Uploader;
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader();
파일 존재 여부 확인
파일이 특정 경로에 위치해 있는지 검사합니다.파일이 존재하지 않으면 false를 반환합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $file = PH_DATA_PATH.'/temp/filename.zip'; $uploader->isfile($file);
인자값 | 설명 |
---|---|
$file | 검사할 파일 경로 입력 |
디렉토리 존재 여부 확인
특정 디렉토리가 존재하는지 검사합니다.디렉토리가 존재하지 않으면 false를 반환합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $dir = PH_DATA_PATH.'/temp/'; $uploader->isdir($dir);
인자값 | 설명 |
---|---|
$dir | 검사할 디렉토리 경로 입력 |
디렉토리 생성 및 Permission 부여
특정 디렉토리가 존재하고 쓰기 권한이 있는지 검사합니다.디렉토리가 존재하지 않거나 쓰기 권한이 없는 경우 디렉토리 생성 후 퍼미션을 0707 로 부여합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $uploader->path = PH_DATA_PATH.'/temp/'; //검사할 디렉토리 경로 $uploader->chkpath(); //검사 수행
파일 확장자 검사
업로드 하려는 파일의 확장자 검사를 수행합니다.
Controller
/app/test.php
위 예시는 업로드 하려는 파일의 확장자가 gif, jpg, png 중 하나에 해당하는지 검사합니다. <?php use Make\Library\Uploader; ... $uploader = new Uploader(); $uploader->intdict = 'gif, jpg, png'; $uploader->chkfile('match'); //match : 포함되는 경우 true 반환 / notmatch : 포함되지 않는 경우 true 반환
만약, 셋 중 하나도 포함되지 않아야 하는 경우 chkfile()의 인자를 notmatch로 변경합니다.
중복되지 않는 파일명 생성
업로드 하려는 파일의 중복 파일명을 방지하기 위해 replace_filename()로 중복되지 않는 유니크한 파일명으로 생성하여 반환 받습니다.유니크한 파일명 생성 방법은 아래 예시를 참고합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $filename = 'testfile.zip'; $filename = $uploader->replace_filename($filename);
인자값 | 설명 |
---|---|
$filename | 파일의 원본 파일명 |
파일 크기 검사
업로드 하려는 파일의 크기가 지정한 크기를 초과하는지 검사합니다.허용 크기를 초과하는 경우 false를 반환합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $byte = 1024000; //Maximum byte $uploader->file = PH_DATA_PATH.'/temp/filename.zip'; //검사할 파일 지정 //검사 수행 if ($uploader->chkbyte($byte) === false) { //허용 용량을 초과하는 경우의 처리 }
인자값 | 설명 |
---|---|
$byte | 최대 파일의 크기(byte 단위) 입력 |
파일 복사
특정 경로에 저장되어 있는 파일을 새로운 파일명으로 복사하여 저장하는 방법입니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $old_file = PH_DATA_PATH.'/temp/filename.zip'; $new_file = PH_DATA_PATH.'/temp/new_filename.zip'; $uploader->filecopy($old_file, $new_file);
인자값 | 설명 |
---|---|
$old_file | 복사 대상 파일 경로 입력 |
$new_file | 저장할 파일 경로 입력 |
파일 업로드
위 가이드를 참고하여 디렉토리 체크 및 파일명 변경을 완료한 뒤 아래 예제 소스코드와 같이설정한 파일명으로 파일 저장을 수행합니다.
Controller
/app/test.php
$uploader->chkpath() 로 파일을 저장할 디렉토리가 존재 하는지 검사를 수행한 다음<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $uploader->path = PH_DATA_PATH.'/temp'; //업로드할 디렉토리 경로 $uploader->chkpath(); //디렉토리가 없다면 생성 후 0707으로 퍼미션 변경 $uploader->file = PH_DATA_PATH.'/origin_temp/filename.zip'; //업로드할 원본 파일 경로 $uploader->upload('new_filename.zip', false); //저장할 파일명 지정 (POST로 넘겨 받은 파일이 아닌 경우 두번째 인자 값을 'false'로 설정)
$uploader->file 에 위치한 원본 파일을 $uploader->path 경로에 새로 저장합니다.
만약, Submit을 통해 POST 로 넘겨 받은 파일을 저장하는 경우에는 아래와 같이 저장 합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; use Corelib\Valid; ... $uploader = new Uploader(); $req = Valid::request('file', 'attach'); $uploader->path = PH_DATA_PATH.'/temp'; //업로드할 디렉토리 경로 $uploader->chkpath(); //디렉토리가 없다면 생성 후 0707으로 퍼미션 변경 $uploader->file = $req['attach']; //POST로 넘겨 받은 첨부파일 $uploader->upload('new_filename.zip'); //저장할 파일명 지정
파일 삭제
기존 저장된 파일을 삭제 하려는 경우 아래 예시 코드와 같이 파일 삭제를 수행합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $uploader->path = PH_DATA_PATH.'/temp'; //삭제할 파일이 위치한 디렉토리 경로 지정 $uploader->drop($file); //삭제할 파일명
인자값 | 설명 |
---|---|
$file | 삭제할 파일 경로 입력 |
디렉토리 삭제
기존 생성된 디렉토리를 작세 하려는 경우 아래 예시 코드와 같이 디렉토리 삭제를 수행합니다.
Controller
/app/test.php
<?php use Make\Library\Uploader; ... $uploader = new Uploader(); $uploader->path = PH_DATA_PATH.'/temp'; //삭제할 디렉토리 경로 지정 $uploader->dropdir();