ホームページ >バックエンド開発 >PHPチュートリアル >コントローラを使用して Yii フレームワークでファイルのアップロードとダウンロードを処理する方法
Yii フレームワークでファイルのアップロードとダウンロードを処理するためにコントローラー (コントローラー) を使用する方法
多くの Web アプリケーションでは、ファイルのアップロードとダウンロードは非常に一般的な機能です。 Yii フレームワークでは、コントローラを通じてファイルのアップロードおよびダウンロード操作を処理できます。この記事では、Yii フレームワークでコントローラを使用してファイルをアップロードおよびダウンロードする方法を紹介し、対応するコード例を示します。
1. ファイル アップロード
ファイル アップロードとは、ローカル コンピューター上のファイルをサーバーに転送するプロセスを指します。 Yii フレームワークでは、コントローラーを使用してファイルのアップロード操作を処理できます。まず、ファイルのアップロードを処理するコントローラーを作成する必要があります。
Yii フレームワークでは、次のコマンドを使用してコントローラーを作成できます:
yii gii/controller UploadController
これは ## で行われます。 #UploadController
という名前のコントローラー ファイルをcontrollers ディレクトリに作成します。
UploadController コントローラー ファイルでは、
actionUpload メソッドを実装して、ファイルのアップロード操作。以下は、単純なファイル アップロード メソッドの例です。
public function actionUpload() { // 获取上传文件 $file = UploadedFile::getInstanceByName('file'); // 定义上传文件存储路径 $uploadPath = Yii::getAlias('@webroot/uploads/'); // 如果上传目录不存在,则创建目录 if (!is_dir($uploadPath)) { mkdir($uploadPath, 0777, true); } // 生成唯一的文件名 $fileName = uniqid() . '.' . $file->extension; // 将文件保存到上传目录 $file->saveAs($uploadPath . $fileName); // 返回上传成功的文件路径 return $uploadPath . $fileName; }上記のコードでは、まず、
UploadedFile::getInstanceByName メソッドを通じて、アップロードされたファイルのインスタンスを取得します。次に、アップロードされたファイルのストレージ パスを定義し、そのパスが存在することを確認しました。次に、一意のファイル名を生成し、アップロードされたファイルをサーバー上のアップロード パスに保存しました。最後に、正常にアップロードされたファイルのファイル パスを返します。
config ディレクトリの
web.php ファイルに、次のルーティング ルールを追加できます。
[ 'POST upload' => 'upload/upload', ]このようにして、
upload にアクセスするときに、 ルート また、POST メソッドでリクエストを送信すると、
UploadController の
actionUpload メソッドが実行されます。
actionDownload メソッドを実装できます。簡単なファイル ダウンロード メソッドの例を次に示します。
public function actionDownload($filename) { // 定义文件路径 $filePath = Yii::getAlias('@webroot/uploads/') . $filename; // 检查文件是否存在 if (!is_file($filePath)) { throw new yiiwebNotFoundHttpException('The file does not exist.'); } // 使用Yii的response组件发送文件到客户端 return Yii::$app->response->sendFile($filePath, $filename); }上記のコードでは、最初にダウンロードするファイルのパスを定義します。次に、ファイルが存在するかどうかを確認します。ファイルが存在しない場合は、404 エラーがスローされます。最後に、Yii フレームワークの
response コンポーネントを使用してファイルをクライアントに送信し、ファイルのダウンロード機能を実装します。
config ディレクトリの
web.php ファイルに、次のルーティング ルールを追加できます。
[ 'GET download/<filename:[wd_]+.[wd]{2,4}>' => 'download/download', ]このようにして、
download/ にアクセスするときに、 filenameルーティングの際、
DownloadController の
actionDownload メソッドが実行され、ファイル名がパラメータとして渡されます。
以上がコントローラを使用して Yii フレームワークでファイルのアップロードとダウンロードを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。