CMultiFileUpload wird zum Hochladen von Dateien verwendet und unterstützt das gleichzeitige Hochladen mehrerer Dateien. Diese UI-Komponente basiert auf dem jQuery Multi File Upload-Plugin. Viele der integrierten UI-Komponenten von Yii basieren auf JQuery, daher müssen Sie ein Assets-Verzeichnis erstellen, um dynamisch generierte Javascripts usw. zu speichern.
Auf die hochgeladenen Dateiinformationen kann über $_FILES['files'] zugegriffen werden. Der Name von CMultiFileUpload lautet beispielsweise „files“ und auf die hochgeladenen Dateiinformationen kann über $_FILES ['files'] zugegriffen werden. Darüber hinaus muss das Form-Attribut, das CMultiFileUpload enthält, enctype=multipart/form-data festlegen.
In diesem Beispiel wird ein Upload-Verzeichnis zum Speichern hochgeladener Dateien erstellt. Wir importieren die hochgeladenen Dateien über die Konfigurationsdateieinstellungen in das Verzeichnis.
Ändern Sie /config/main.php und fügen Sie Projektcode hinzu
// application-level parameters that can be accessed // using Yii::app()->params['paramName'] 'params'=>require(dirname(__FILE__).'/params.php'),
Fügen Sie einige Parameter zur Anwendung hinzu. Die Datei zum Speichern der Parameter ist config/param.php
Definieren Sie die Upload-Datei. Das Verzeichnis lautet wie folgt:
// this contains the application parameters that can be maintained via GUIreturn array(//upload directory'uploadDir' => 'upload/',);
Im Code können Sie über Yii::app()->params['uploadDir'] auf diesen Parameter zugreifen , Sie können upload auch direkt als feste Konstante verwenden, ohne die Anwendungsparameter params zu definieren.
In diesem Beispiel ist die Verwendung von Model nicht erforderlich. Wir definieren View wie folgt:
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'));?>
Mit CMultiFileUpload können Sie einige Optionen definieren Einzelheiten finden Sie unter
Ändern des entsprechenden Controllers/der entsprechenden Aktion.
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('.', '..')); } }
Die Aktionsmethode löscht zunächst die Dateien im Upload-Verzeichnis und speichert dann die hochgeladenen Dateien in diesem Verzeichnis.
Das Obige ist der Inhalt des PHP-Entwicklungsframeworks Yii Framework-Tutorial (15) UI-Komponente MultiFileUpload-Beispiel Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website ( www.php.cn)!