Maison >cadre php >YII >Utilisez le framework yii pour implémenter les fonctions de téléchargement et de téléchargement de fichiers

Utilisez le framework yii pour implémenter les fonctions de téléchargement et de téléchargement de fichiers

王林
王林avant
2020-08-17 17:04:013279parcourir

Utilisez le framework yii pour implémenter les fonctions de téléchargement et de téléchargement de fichiers

1. CUploadedFile implémente le téléchargement de fichiers uniques

(tutoriel recommandé : framework yii )

(1) Tout d'abord, dans le modèle La classe déclare un attribut pour stocker le nom du fichier (soit le modèle de formulaire, soit le modèle d'enregistrement actif). Déclarez également une règle de validation de fichier pour garantir que les fichiers téléchargés portent l'extension spécifiée.

class Item extends CActiveRecord
{
    public $image;
    // ... other attributes
 
    public function rules()
    {
        return array(
            array('image', 'file', 'types'=>'jpg, gif, png'),
        );
    }
}

(2) Ensuite, définissez une méthode d'action dans la classe du contrôleur pour collecter les données soumises par l'utilisateur

class ItemController extends CController
{
    public function actionCreate()
    {
        $model=new Item;
        if(isset($_POST['Item']))
        {
            $model->attributes=$_POST['Item'];
            $model->image=CUploadedFile::getInstance($model,'image');
            if($model->save())
            {
                $model->image->saveAs('path/to/localFile');
                // redirect to success page
            }
        }
        $this->render('create', array('model'=>$model));
    }
}

(tutoriels associés recommandés : tutoriel graphique php)

(3) Enfin, créez la vue action et générez un champ téléchargé.

<?php echo CHtml::form(&#39;&#39;,&#39;post&#39;,array(&#39;enctype&#39;=>&#39;multipart/form-data&#39;)); ?>
...
<?php echo CHtml::activeFileField($model, &#39;image&#39;); ?>
...
<?php echo CHtml::endForm(); ?>

2. CUploadedFile implémente plusieurs téléchargements de fichiers

Méthode : afficher le code :

for($i=0;$i<3;$i++){
    //echo $form->fileField($model,&#39;xiangguan_tupian[]&#39;).&#39;<br/>&#39;;//这种方法不行
    //echo CHtml::activeFileField($model,&#39;xiangguan_tupian[]&#39;);//这种也不行
    //echo CHtml::fileField(&#39;xiangguan_tupian[]&#39;,&#39;&#39;,array(&#39;id&#39;=>&#39;xiangguan_tupian&#39;.$i)).&#39;&nbsp&#39;;//这种也不行
    echo CHtml::activeFileField($model,&#39;xiangguan_tupian[]&#39;,array(&#39;id&#39;=>&#39;xiangguan_tupian&#39;.$i));
}
?>

contrôleur côté contrôleur : le téléchargement est traité.

(Recommandation vidéo d'apprentissage :

Tutoriel vidéo php

)Points clés :

$model=new Info;
// echo &#39;<hr><br>&#39;;
$obj_array=CUploadedFIle::getInstances($model,&#39;xiangguan_tupian&#39;);
//注意这里不是getInstance而是getInstances多了个s,这样得到的是一个包含CUploadedFile对象的数组
//print_r($obj_array);
foreach($obj_array as $k=>$v){
    $v->saveAs(Yii::app()->basePath.&#39;/&#39;.$k.&#39;_test.&#39;.$v->getExtensionName());
}

3. Utilisez sendFile() pour télécharger des fichiers

CUploadedFile::getInstance();    // 返回的是一个CUploadedFile对象,
CUploadeFile::getInstanceByName();   //返回的是一个CUploadedFile对象            
CUploadedFile::getInstances()    //返回的是一个值为CUploadedFile对象的数组
CUploadedFile::getInstancesByName();   //返回的是一个值为CUploadedFile对象的数组

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Yii est-il open source ?Article suivant:Yii est-il open source ?