首頁  >  文章  >  後端開發  >  PHP開發框架Yii Framework教學(15) UI 元件 MultiFileUpload範例

PHP開發框架Yii Framework教學(15) UI 元件 MultiFileUpload範例

黄舟
黄舟原創
2017-01-21 10:20:591288瀏覽

CMultiFileUpload 用於上傳文件,支援一次同時上傳多個文件。這個UI元件是基於jQuery Multi File Upload 外掛。 Yii 內建的許多UI元件都是基於JQuery,因此需要建立assets 目錄用於存放動態產生的javascripts 等。

所上傳的檔案的資訊可以透過$_FILES[widget-name]來訪問,例如,CMultiFileUpload的name為」files」 所上傳的檔案資訊可以透過$_FILES ['files']來存取。此外包含CMultiFileUpload的Form屬性需要設定enctype=multipart/form-data。

本例建立 一個upload目錄用來存放上傳的檔案。我們透過設定檔設定中個上傳檔案來導入目錄。

修改/config/main.php 新增專案程式碼

// application-level parameters that can be accessed
// using Yii::app()->params['paramName']
'params'=>require(dirname(__FILE__).'/params.php'),

為Application加入一些參數,存放參數的檔案為config/param.php

定義上傳檔案的目錄如下:

// this contains the application parameters that can be
maintained via GUIreturn array(//upload directory'uploadDir' => 'upload/',);

在程式碼中可以透過Yii: :app()->params['uploadDir'] 來存取這個參數,對於這個簡單的例子,你也可以直接使用upload/ 做為固定的常數而無需定義Application的參數params。

本例不需要使用Model,我們定義View如下:

beginWidget('CActiveForm',array('method' =>'post','htmlOptions'=>array('enctype'=>'multipart/form-data'),)); 
?>
widget('CMultiFileUpload',array('name'=>'files','accept'=>'jpg|png','max'=>3,'remove'=>'Remove',//'denied'=>'', 
message that is displayed when a file type is not allowed//'duplicate'=>'', 
message that is displayed when a file appears twice'htmlOptions'=>array('size'=>25),)); 
?>endWidget(); 
?>
findFiles() as $filename): ?>
Yii::app()->baseUrl.'/'.Yii::app()->params['uploadDir'].$filename,array('rel'=>'external'));?>

使用CMultiFileUpload上傳副檔名為jpg|png 的文件,CMultiFileUpload可以透過設定定義一些選項,具體可以參考

修改其對應的Controller/Action。

class SiteController extends CController
{
/**
* Index action is the default action in a controller.
*/
public function actionIndex()
{
if(isset($_FILES['files']))
{
// delete old files
foreach($this->findFiles() as $filename)
unlink(Yii::app()->params['uploadDir'].$filename);
//upload new files
foreach($_FILES['files']['name'] as $key=>$filename)
move_uploaded_file($_FILES['files']['tmp_name'][$key],
Yii::app()->params['uploadDir'].$filename);
}
$this->render('index');
}
/**
* @return array filename
*/
public function findFiles()
{
return array_diff(scandir(Yii::app()->params['uploadDir']),
array('.', '..'));
}
}

Action方法先刪除upload目錄下的文件,然後將上傳的文件存放到該目錄下。

PHP開發框架Yii Framework教學(15) UI 元件 MultiFileUpload範例

以上就是PHP開發框架Yii Framework教程(15) UI 元件 MultiFileUpload範例的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn