FuelPHP-파일 업로드
파일 업로드는 양식 프로그래밍에서 가장 일반적으로 사용되는 기능 중 하나입니다. FuelPHP는 특별한 클래스를 제공합니다.Upload파일 업로드를 처리합니다. 이 장에서는 업로드 클래스를 사용하여 파일을 업로드하는 방법을 알아 보겠습니다.
구성
업로드 클래스는 별도의 구성 파일을 사용하여 구성 할 수 있습니다. fuel/app/config/upload.php. 중요한 구성 항목은 다음과 같습니다.
max_size− 업로드 할 파일의 최대 크기를 설정합니다. "0"은 무제한 업로드 크기를 나타냅니다.
ext_whitelist − 허용되는 파일 확장자 설정
ext_blacklist − 허용되지 않는 파일 확장자 설정
type_whitelist− 허용되는 파일 유형을 설정합니다. 예를 들어 "text / plain"MIME 유형의 경우 "text"
type_blacklist − 허용되지 않는 파일 유형 설정
mime_whitelist− 허용되는 MIME 파일 유형을 설정합니다. 예 : "text / plain"
mime_blacklist − 허용되지 않는 MIME 파일 유형 설정
prefix − 업로드 된 파일을 서버에 저장하는 동안 파일 이름의 접두사 문자열
suffix − 업로드 된 파일을 서버에 저장하는 동안 파일 이름에 접미사 문자열
extension − 설정할 업로드 파일의 확장자
create_path − 파일 경로 생성 여부 (사용할 수없는 경우)
overwrite − 업로드 된 파일 저장시 기존 파일 덮어 쓰기 여부
auto_rename − 업로드 된 파일을 저장하는 동안 시퀀스 번호를 추가하여 파일 이름을 바꿀지 여부
randomize − 업로드 된 파일을 저장할 임의의 32 자 이름 생성 여부
업로드 방법
업로드 클래스는 사용자가 업로드 한 파일을 처리하고 저장하는 옵션을 제공합니다. 처리 된 모든 파일 (저장 전)은 결과 배열에 다음 정보를 포함합니다.
field − 양식 필드의 이름
name − 업로드 된 파일의 이름
type − 브라우저에서 정의한 파일 유형
mimetype − 업로드 클래스에 정의 된 파일 유형
file − 업로드 된 파일의 임시 위치의 정규화 된 이름
filename − 업로드 된 파일의 파일 이름
extension − 업로드 된 파일의 확장자
size − 업로드 된 파일의 크기 (바이트)
errors − 오류 코드 및 메시지가있는 오류 배열
error − 업로드 실패 이유와 함께 배열 오류를 설정할지 여부 (업로드 실패시)
파일이 서버에 저장되면 결과 배열에도 다음 정보가 포함됩니다.
saved_to − 업로드 된 파일이 저장된 완전한 경로
saved_as − 저장된 파일의 이름
errors − 업데이트 된 오류 배열
이제 Upload 클래스의 방법을 살펴 보겠습니다.
is_valid
is_valid는 사용자가 유효한 파일을 업로드 한 경우 true를 반환합니다.
// do we have any uploaded files to save?
if (Upload::is_valid()) {
// process
}
get_files
get_files는 업로드 된 모든 파일을 다차원 배열로 반환합니다. 양식 파일 입력의 색인 / 이름이 지정되면 지정된 파일 입력과 관련된 업로드 된 파일 만 반환됩니다.
foreach(Upload::get_files() as $file) {
// do something with the file info
}
if ( Upload::get_files(0)) {
// do something
}
get_errors
get_errors는 하나 이상의 파일 업로드에 실패한 경우 오류 배열을 반환합니다. 양식 파일 입력 이름의 색인 / 이름을 지정하면 지정된 파일 입력과 관련된 오류 만 반환합니다.
foreach(Upload::get_errors() as $file) {
// do something with the file info
}
if (Upload::get_errors('myimage')) {
// do something
}
방법
프로세스는 업로드 된 파일에 대한 정보를 수집하는 실제 프로세스를 의미합니다. 어레이를 사용하여 새로운 사용자 지정 구성을 제공 할 수 있습니다. 구성이 지정되지 않은 경우 fuel / app / config / upload.php에 정의 된 구성을 사용합니다.
Upload::process (array(
'auto_rename' => false,
'overwrite' => true
));
저장
저장은 유효한 모든 파일을 적절한 위치에 저장하는 실제 프로세스를 의미합니다. 특정 항목 만 저장하도록 색인을 지정할 수 있습니다.
Upload::save();
Upload::save(0);
Upload::save(0, 3);
작업 예
직원 샘플에 새 컨트롤러 Controller_Upload를 만들어 업로드 기능을 테스트 해 보겠습니다.
Step 1 − 파일 생성, fuel/app/classes/controller/upload.php. 업로드 컨트롤러를 만듭니다.
<?php
class Controller_Upload extends Controller {
}
Step 2 − 새로운 액션 get_upload를 생성합니다.
<?php
class Controller_Upload extends Controller {
public function get_index() {
return \View::forge("upload/index");
}
}
Step 3 − 생성 된 작업에 대한 새보기를 생성합니다.
<!DOCTYPE html>
<html>
<body>
<form action = "/upload/index" method = "post" enctype = "multipart/form-data">
Select image to upload:
<input type = "file" name = "fileToUpload" id = "fileToUpload">
<input type = "submit" value = "Upload Image" name = "submit">
</form>
</body>
</html>
Step 4 − 업로드 된 파일을 처리 할 새 작업 post_action을 생성합니다.
<?php
class Controller_Upload extends Controller {
public function get_index() {
return \View::forge("upload/index");
}
public function post_index(){
$config = array(
'path' => DOCROOT.'files',
'randomize' => true,
'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'),
);
Upload::process($config);
// if there are any valid files
if (Upload::is_valid()) {
Upload::save();
echo "success";
} else {
// and process any errors
foreach (Upload::get_errors() as $file) {
echo var_dump($file);
}
}
}
}
마지막으로 URL을 요청하여 애플리케이션을 실행하고 http://localhost:8080/upload/index 파일 업로드를 시도합니다.