ホームページ  >  記事  >  PHPフレームワーク  >  yii フレームワークを使用してファイルのアップロードおよびダウンロード機能を実装する

yii フレームワークを使用してファイルのアップロードおよびダウンロード機能を実装する

王林
王林転載
2020-08-17 17:04:013179ブラウズ

yii フレームワークを使用してファイルのアップロードおよびダウンロード機能を実装する

1. CUploadedFile は単一ファイルのアップロードを実装します

(推奨チュートリアル: yii Framework)

(1) まず、モデル このクラスは、ファイル名 (フォーム モデルまたはアクティブ レコード モデル) を格納するための属性を宣言します。また、アップロードされたファイルに指定された拡張子が付いていることを確認するためのファイル検証ルールも宣言します。

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

(2) 次に、ユーザーによって送信されたデータを収集するためのアクション メソッドをコントローラー クラスに定義します。

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

(推奨される関連チュートリアル: php graphictutorial)

(3) 最後に、アクション ビューを作成し、アップロードされたフィールドを生成します。

<?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 は複数のファイルのアップロードを実装します

メソッド: ビュービューコード:

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

controller コントローラー側:アップロードは処理されています。

(学習ビデオの推奨:

php ビデオ チュートリアル

) キー ポイント:

$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. sendFile() を使用してファイルをダウンロードする

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

以上がyii フレームワークを使用してファイルのアップロードおよびダウンロード機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。