CMultiFileUpload est utilisé pour télécharger des fichiers et prend en charge le téléchargement de plusieurs fichiers à la fois. Ce composant d'interface utilisateur est basé sur le plugin jQuery Multi File Upload. De nombreux composants d'interface utilisateur intégrés de Yii sont basés sur JQuery, vous devez donc créer un répertoire d'actifs pour stocker les javascripts générés dynamiquement, etc.
Les informations sur le fichier téléchargé sont accessibles via $_FILES[widget-name]. Par exemple, le nom de CMultiFileUpload est "files" et les informations sur le fichier téléchargé sont accessibles via $_FILES ['files']. De plus, l'attribut Form contenant CMultiFileUpload doit définir enctype=multipart/form-data.
Cet exemple crée un répertoire de téléchargement pour stocker les fichiers téléchargés. Nous importons les fichiers téléchargés dans le répertoire via les paramètres du fichier de configuration.
Modifiez /config/main.php et ajoutez le code du projet
// application-level parameters that can be accessed // using Yii::app()->params['paramName'] 'params'=>require(dirname(__FILE__).'/params.php'),
Ajoutez quelques paramètres à l'application Le fichier pour stocker les paramètres est config/param.php
<🎜. >Définissez le fichier de téléchargement Le répertoire est le suivant :// this contains the application parameters that can be maintained via GUIreturn array(//upload directory'uploadDir' => 'upload/',);
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'));?>
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('.', '..')); } }