fuelphp 文件上傳
文件上傳是表單編程中最常用的功能之一。 fuelphp 提供了一個(gè)特殊的類, upload 來處理文件的上傳。本章讓我們學(xué)習(xí)如何使用 upload 類上傳文件。
配置
上傳類可以使用單獨(dú)的配置文件 fuel/app/config/upload.php 進(jìn)行配置。重要的配置條目如下:
上傳方法
upload 類提供了處理和保存用戶上傳的文件的選項(xiàng)。每個(gè)處理過的文件(保存前)都會(huì)在結(jié)果數(shù)組中包含以下信息。
一旦文件保存在服務(wù)器中,結(jié)果數(shù)組也會(huì)有以下信息。
現(xiàn)在,讓我們看看 upload 類的方法。
is_valid
is_valid 返回 true,如果用戶上傳了任何有效文件。
// do we have any uploaded files to save? if (upload::is_valid()) { // process }
獲取文件
get_files 將所有上傳的文件作為多維數(shù)組返回。如果指定了表單文件輸入的索引/名稱,那么它將僅返回與指定文件輸入相關(guān)的上傳文件。
foreach(upload::get_files() as $file) { // do something with the file info } if ( upload::get_files(0)) { // do something }
get_errors
get_errors 返回一個(gè)錯(cuò)誤數(shù)組,如果上傳一個(gè)或多個(gè)文件失敗。如果指定了表單文件輸入名稱的索引/名稱,那么它將僅返回與指定文件輸入相關(guān)的錯(cuò)誤。
foreach(upload::get_errors() as $file) { // do something with the file info } if (upload::get_errors('myimage')) { // do something }
過程
process 是指收集有關(guān)上傳文件的信息的實(shí)際過程。我們可以使用數(shù)組提供新的自定義配置。如果沒有指定配置,則使用fuel/app/config/upload.php中定義的配置
upload::process (array( 'auto_rename' => false, 'overwrite' => true ));
保存
save 是指將所有經(jīng)過驗(yàn)證的文件保存在適當(dāng)位置的實(shí)際過程。我們可以指定索引以僅保存該特定條目。
upload::save(); upload::save(0); upload::save(0, 3);
工作示例
讓我們?cè)趩T工示例中創(chuàng)建一個(gè)新控制器 controller_upload 來測(cè)試上傳功能。
步驟 1-創(chuàng)建一個(gè)文件, fuel/app/classes/controller/upload.php。創(chuàng)建上傳控制器。
class controller_upload extends controller { }
第 2 步-創(chuàng)建一個(gè)新操作 get_upload。
class controller_upload extends controller { public function get_index() { return \view::forge("upload/index"); } }
第 3 步-為創(chuàng)建的操作創(chuàng)建一個(gè)新視圖。
<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>
第 4 步-創(chuàng)建一個(gè)新的操作 post_action 來處理上傳的文件。
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); } } } }
最后,通過請(qǐng)求 url 來運(yùn)行應(yīng)用程序, http://localhost:8080/upload/index 并嘗試上傳文件。
結(jié)果

- CodeIgniter 應(yīng)用程序架構(gòu)
- CodeIgniter 臨時(shí)數(shù)據(jù)
- CodeIgniter 安全
- CakePHP 教程
- CakePHP 使用數(shù)據(jù)庫
- CakePHP 查看記錄
- CakePHP 更新記錄
- CakePHP 刪除記錄
- CakePHP 錯(cuò)誤和異常處理
- CakePHP 會(huì)話管理
- FuelPHP 請(qǐng)求和響應(yīng)
- FuelPHP 驗(yàn)證
- FuelPHP 主題
- Laravel 配置
- Laravel 控制器
- Laravel 重定向
- Laravel 文件上傳
- Laravel 錯(cuò)誤處理
- Laravel 契約
- Laravel 認(rèn)證