Heim  >  Artikel  >  PHP-Framework  >  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

王林
王林nach vorne
2020-08-17 17:04:013229Durchsuche

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'),
        );
    }
}

(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));
    }
}

(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(); ?>
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));
}
?>
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());
}

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

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

Wichtige Punkte: p >

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

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);
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Ist yii Open Source?Nächster Artikel:Ist yii Open Source?