ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP6でファイルアップロード機能を実装する方法
インターネットの継続的な発展に伴い、ファイルのアップロード機能を実装する必要がある Web サイトがますます増えています。 ThinkPHP6 では、ファイルアップロード機能の実装も非常に簡単です。今回はThinkPHP6にファイルアップロード機能を実装する方法を紹介します。
1. ファイル アップロード パラメーターの構成
ファイル アップロード機能の実装を開始する前に、まず ThinkPHP6 構成ファイルでファイル アップロード パラメーターを設定する必要があります。プロジェクト構成ファイル config/app.php を見つけて、params 配列に次のコードを追加します。
'upload' => [ 'maxSize' => 1024 * 1024 * 10, //文件上传的最大大小 'exts' => ['jpg', 'gif', 'png', 'jpeg'], //允许上传的文件后缀 'rootPath' => app()->getRootPath() . 'public/uploads/', //文件上传的根目录 'savePath' => '', //文件保存的子目录 'subName' => ['date', 'Ymd'], //子目录名称的命名规则 ],
ここでは、ファイルのアップロードの最大サイズを 10MB に設定し、アップロードできるファイルのサフィックスは jpg です。 、gif、png、jpegの4形式で、ファイルアップロードのルートディレクトリはpublic/uploads/、サブディレクトリの命名規則は日付(年、月、日)で命名されるように設定されています。
2. ファイル アップロード機能の実装
ファイル アップロード パラメーターを設定した後、ファイル アップロード機能の実装を開始できます。コントローラーに次のコードを記述します:
public function upload() { $file = request()->file('image'); if ($file) { $info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move(config('upload.rootPath')); if ($info) { $data = [ 'code' => 0, 'msg' => '上传成功', 'url' => config('upload.rootPath') . $info->getSaveName(), ]; } else { $data = [ 'code' => 1, 'msg' => $file->getError(), 'url' => '', ]; } } else { $data = [ 'code' => 1, 'msg' => '请选择要上传的文件', 'url' => '', ]; } return json($data); }
ここでは、まず request()->file('image') メソッドを通じてアップロードされたファイルを取得し、ファイルが存在するかどうかを確認し、次に validate() を使用します。アップロードを検証するメソッド ファイルのサフィックスを検証して、ユーザーがアップロードしたファイル形式が正しいことを確認し、最後に move() メソッドを使用してファイルをアップロードし、アップロードの成功またはアップロードの失敗の結果を返します。
3. ページの実装
最後に、ページにファイル アップロード機能を実装する必要があります。コードは次のとおりです:
<form id="upload-form" action="<?php echo url('upload'); ?>" method="post" enctype="multipart/form-data"> <input type="file" name="image" id="image" accept="image/jpeg,image/png,image/gif"> </form> <button id="btn-upload" type="button">上传</button> <script> $(function() { $('#btn-upload').click(function() { var formData = new FormData($('#upload-form')[0]); $.ajax({ url: $('#upload-form').attr('action'), type: 'post', data: formData, contentType: false, processData: false, success: function(res) { if (res.code === 0) { alert(res.msg); $('#image').val(''); } else { alert(res.msg); } }, error: function(xhr, status, error) { alert('上传错误:' + error); } }); }); }); </script>
ここでは、フォーム フォームを追加します。アップロードするページ ファイルの入力タグの名前の値は「image」で、jQuery の ajax() メソッドを使用してフォーム データを FormData モードでコントローラーにアップロードし、アップロードが成功または失敗した後に、それに応じたプロンプトを表示します。
4. 概要
上記のコード実装により、ThinkPHP6 にファイル アップロード機能を実装することができました。同時に、セキュリティにも注意を払い、ユーザーがアップロードしたファイルが正しい形式とサイズであることを確認し、ファイルのアップロードがシステムに害を及ぼすことを回避し、ユーザーとシステムのセキュリティを確保する必要があります。
以上がThinkPHP6でファイルアップロード機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。