Heim > PHP-Framework > YII > Verwenden Sie das yii-Framework, um Funktionen zum Hochladen und Herunterladen von Dateien zu implementieren

Verwenden Sie das yii-Framework, um Funktionen zum Hochladen und Herunterladen von Dateien zu implementieren

王林
Freigeben: 2020-08-17 17:04:01
nach vorne
3248 Leute haben es durchsucht

Verwenden Sie das yii-Framework, um Funktionen zum Hochladen und Herunterladen von Dateien zu implementieren

1. CUploadedFile implementiert das Hochladen einzelner Dateien

( Empfohlenes Tutorial: yii-Framework)

(1) Deklarieren Sie zunächst ein Modellklassenattribut um den Dateinamen zu speichern (entweder Formularmodell oder aktives Datensatzmodell). Deklarieren Sie außerdem eine Dateivalidierungsregel, um sicherzustellen, dass hochgeladene Dateien die angegebene Erweiterung haben.

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

(2) Definieren Sie dann eine Aktionsmethode in der Controller-Klasse, um die vom Benutzer übermittelten Daten zu sammeln

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));
    }
}
Nach dem Login kopieren

(empfohlene verwandte Tutorials: php-Grafik-Tutorial)

(3) Erstellen Sie abschließend die Aktionsansicht und generieren Sie ein hochgeladenes Feld.

<?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(); ?>
Nach dem Login kopieren
E

2, Cuploadedfile zum Implementieren des Multi-File-Uploads

Methode: View View-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));
}
?>
Nach dem Login kopieren
E

Controller Controller-Seite:

$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());
}
Nach dem Login kopieren

Multi-File-Upload Die Bearbeitung ist abgeschlossen und erfolgt.

(Empfehlung für Lernvideos: PHP-Video-Tutorial)

Wichtige Punkte:

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

3. Verwenden Sie sendFile(), um Dateien herunterzuladen

$type = LFilter::checkString($_GET[&#39;t&#39;]);
$dataProvider = Book::model()->findByPk($id);
$content = $this->renderPartial(&#39;book&#39;,array(
&#39;dataProvider&#39; => $dataProvider,
&#39;type&#39; => $type,
),true,false);
Yii::app()->request->sendFile($dataProvider->name.&#39;.&#39;.$type,$content);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVerwenden Sie das yii-Framework, um Funktionen zum Hochladen und Herunterladen von Dateien zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage