File Handling 파일을 저장, 삭제, 복사등의 파일 처리 방법을 안내합니다.

사용 준비

File Handling을 사용하기 위해선 아래와 같이 Controller 최상단에 use 가 선언 되어야 합니다.
Controller /app/test.php
<?php
use Make\Library\Uploader;
File Handling을 수행하기 위해 새로운 인스턴스를 생성합니다.
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
<?php
use Make\Library\Uploader;

...

$uploader = new Uploader();

$uploader->intdict = 'gif, jpg, png';
$uploader->chkfile('match'); //match : 포함되는 경우 true 반환 / notmatch : 포함되지 않는 경우 true 반환
위 예시는 업로드 하려는 파일의 확장자가 gif, jpg, png 중 하나에 해당하는지 검사합니다.
만약, 셋 중 하나도 포함되지 않아야 하는 경우 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
<?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->chkpath() 로 파일을 저장할 디렉토리가 존재 하는지 검사를 수행한 다음
$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();