ホームページ >PHPフレームワーク >YII >Yii フレームワークでのファイルのアップロードとダウンロード: ファイル関連の操作を実装する

Yii フレームワークでのファイルのアップロードとダウンロード: ファイル関連の操作を実装する

王林
王林オリジナル
2023-06-21 09:44:261258ブラウズ

Yii フレームワークは、PHP 言語をベースにした MVC フレームワークであり、その主な特徴は、迅速な開発、シンプルさ、効率性です。 Web サイト開発ではファイルのアップロードとダウンロードがよく行われますが、この記事では Yii フレームワークでファイルのアップロードとダウンロードを実装する方法を紹介します。

1. ファイルのアップロード

1. 準備作業

ファイルをアップロードする前に、最初に関連する設定を実行する必要があります。 config/main.php ファイルを開き、次のコードをコンポーネントに追加します。

'components' => [
      'request' => [
        'parsers' => [
          'application/json' => 'yiiwebJsonParser',
          'multipart/form-data' => 'yiiwebMultipartFormDataParser',
        ],
      ],
        'request' => [
        'enableCsrfCookie' => false,
        'enableCsrfValidation' => false,
        'parsers' => [
          'multipart/form-data' => 'yiiwebMultipartFormDataParser',
        ],
      ],
        'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
      ],
 
  ],

2 つのリクエスト パラメーター (parsers とenableCsrfValidation) をコンポーネントに追加します。 parsers はリクエストのパーサーです。multipart/form-data を追加すると、ファイルのアップロードが許可されることを示します。 EnableCsrfValidation は、CSRF 検証をオフにすることを意味します。

2. ファイル アップロードの実装

コントローラーでファイル アップロードを実装するには、フォーム送信または Ajax アップロードを選択できます。ここではフォーム送信を例に挙げます。

public function actionUpload()
    {
        $uploadModel = new UploadForm();
 
        if (Yii::$app->request->isPost) {
            $uploadModel->file = UploadedFile::getInstance($uploadModel, 'file');
            if ($uploadModel->upload()) {
                // file is uploaded successfully
                return;
            }
        }
 
        return $this->render('upload', ['model' => $uploadModel]);
    }

actionUpload では、ファイルをアップロードするためのモデル クラス UploadForm がインスタンス化されます。同時に、 Yii::$app->request->isPost を使用して POST リクエストであるかどうかを判断し、そうであれば Yii::$app->request->getInstance() メソッドを実行します。ファイル情報を取得するために使用され、upload() メソッドを呼び出してファイルをアップロードします。アップロードが成功した場合は true を返し、失敗した場合は false を返します。

UploadForm クラスの実装コードは次のとおりです。

class UploadForm extends yiiaseModel
    {
        /**
         * @var UploadedFile file attribute
         */
        public $file;
 
 
        /**
         * @return array the validation rules.
         */
        public function rules()
        {
            return [
                [['file'], 'file'],
            ];
        }
 
        public function upload()
        {
            if ($this->validate()) {
                $filePath = 'uploads/' . $this->file->baseName . '.' . $this->file->extension;
                $this->file->saveAs($filePath);
                return true;
            } else {
                return false;
            }
        }
    }

UploadForm では、アップロードされたファイルを格納するためのパブリック属性ファイルが設定されます。同時に、ファイルを検証するためのルール メソッドが設定され、検証に合格した後にファイルをアップロードします。ファイルアップロードのパスは 'uploads/' . $this->file->baseName . '.' . $this->file->extension です。

3. ファイル ダウンロードの実装

ファイル ダウンロード関数の実装は比較的簡単で、コントローラーでファイル ストリームを直接返すだけです。

public function actionDownload($file)
    {
        Yii::$app->response->sendFile($file);
    }

actionDownload では、Yii::$app->response->sendFile() メソッドを使用してファイル ストリームを返します。 $file はファイル パスです。

2. 概要

この記事では、主にファイルのアップロードとダウンロードに関連する設定、操作、関連モデルの設計を含む、Yii フレームワークでファイルのアップロードとダウンロード機能を実装する方法を紹介します。この記事の学習を通じて、Yii フレームワークでのファイル操作についての理解と習熟が深まり、関連する機能をより便利かつ迅速に実装できるようになります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。