Maison  >  Article  >  développement back-end  >  Cadre de développement PHP Tutoriel Yii Framework (15) Exemple de composant d'interface utilisateur MultiFileUpload

Cadre de développement PHP Tutoriel Yii Framework (15) Exemple de composant d'interface utilisateur MultiFileUpload

黄舟
黄舟original
2017-01-21 10:20:591358parcourir

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/',);
Dans le code, vous pouvez accéder à ce paramètre via Yii::app()->params['uploadDir']. , vous pouvez également utiliser upload directement / Comme constante fixe sans définir les paramètres du paramètre Application.

Il n'est pas nécessaire d'utiliser Model dans cet exemple. Nous définissons View comme suit :

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'));?>
Utilisez CMultiFileUpload pour télécharger des fichiers avec l'extension jpg|png. Pour plus de détails, veuillez vous référer à

Modifier son contrôleur/action correspondant.

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('.', '..'));
}
}
La méthode Action supprime d'abord les fichiers dans le répertoire de téléchargement, puis stocke les fichiers téléchargés dans ce répertoire.

Cadre de développement PHP Tutoriel Yii Framework (15) Exemple de composant dinterface utilisateur MultiFileUpload

Ce qui précède est le contenu du tutoriel du cadre de développement PHP Yii Framework (15) Exemple de composant d'interface utilisateur MultiFileUpload Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (. www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn