«

»

Fév 05

Yii1 – Upload un fichier

Nous allons voir dans cet article comment envoyer un fichier sur le serveur après sélection par l’utilisateur.

Au niveau de la vue (view.php)

Nous allons utiliser le composant « activeFileField » pour que l’utilisateur sélectionne le fichier.
Note : Pour que cela fonctionne, il faut mettre à jour ‘htmlOptions’ avec « array(‘enctype’ => ‘multipart/form-data’) ».

<h1>
<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'users-users-form',
	'enableAjaxValidation'=>false,
    'htmlOptions' => array('enctype' => 'multipart/form-data'),
)); ?>
 
<div class="row">
        <?php echo $form->labelEx($model,'image'); ?>
        <?php echo CHtml::activeFileField($model, 'image'); ?>  
        <?php echo $form->error($model,'image'); ?>
</div>
<p>
 
</p>
<div class="row buttons">
		<?php echo CHtml::submitButton('Valider'); ?>
	</div>
<?php $this->endWidget(); ?>

Modèle (Image.php)

Pour gérer le fichier, nous allons créer un modèle afin de récupérer les données saisies par l’utilisateur
la variable $image contiendra donc le fichier a télécharger.

class Image extends CActiveRecord
{
    /**
     * Cette propriété sera utilisée pour stocker les informations du fichier
     */
     public $image;
 
 
     public function rules()
    {
        return array(
            array('image', 'file', 'types'=>'jpg, gif, png'),
        );
    }

Contrôleur (ImageController.php)

Nous allons stocker le fichier dans un répertoire au niveau de la racine de notre site « www/Monsite/uploads/files/ ».
Pour cela, le composant « CUploadedFile » va prendre en charge la récupération et la copie du fichier sur le serveur.

public function actionUploadFile()
{
        // Création de l'objet
        $model=new Image;
       // On rentre dans le if si l'utilisateur a valider la page et sélectionner un fichier 
        if(isset($_POST['Image']))
        {
          // Les informations saisies sur la page sont récupérées dans l'objet Image (voir Modèle ci-dessus)
          $model->attributes=$_POST['Image'];
          // Récupération des données du composant activeFileField 
          $uploadedFile = CUploadedFile::getInstance($model, 'image'); 
          // Extraction du nom du fichier
          $fileName = $uploadedFile->getName();
          $model->file_name = $uploadedFile->getName(); 
          // Sauvegarde du fichier sur le serveur
          $uploadedFile->saveAs(Yii::app()->basePath.'/../uploads/files/'.$fileName);  
        }
        // Affichage de la page
         $this->render('view',array('model'=>$model,));
}

1 ping

  1. uploader un fichier dans une base de données

    […] « Upload un fichier […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>