Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Entwicklungsframework Yii Framework-Tutorial (15) UI-Komponente MultiFileUpload-Beispiel

PHP-Entwicklungsframework Yii Framework-Tutorial (15) UI-Komponente MultiFileUpload-Beispiel

黄舟
黄舟Original
2017-01-21 10:20:591286Durchsuche

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.

PHP-Entwicklungsframework Yii Framework-Tutorial (15) UI-Komponente MultiFileUpload-Beispiel

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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn