如何實現ThinkPHP6中的文件上傳功能

隨著互聯網的不斷發展,越來越多的網站需要實現文件上傳功能。在thinkphp6中,實現文件上傳功能也變得非常簡單。今天我們就來介紹一下如何在thinkphp6中實現文件上傳功能。

一、配置文件上傳參數

在開始實現文件上傳功能之前,首先需要在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四種格式,文件上傳的根目錄為public/uploads/,同時設置了子目錄名稱的命名規則為按日期(年月日)來命名。

二、實現文件上傳功能

立即學習PHP免費學習筆記(深入)”;

在配置好文件上傳參數之后,就可以開始實現文件上傳功能了。在控制器中編寫以下代碼:

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()方法進行文件上傳,并返回上傳成功或上傳失敗的結果。

三、頁面實現

最后,我們需要在頁面上實現文件上傳功能,代碼如下:


<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>

這里我們在頁面上添加了一個form表單,上傳文件的input標簽的name值為’image’,接著使用jQuery的ajax()方法將form數據以FormData方式上傳到控制器中,在上傳成功或失敗后進行相應的提示。

四、總結

通過以上代碼實現,我們已經成功在ThinkPHP6中實現文件上傳功能。同時,我們也要注意安全性,確保用戶上傳的文件格式正確、大小合適,避免上傳的文件對系統造成危害,保障用戶和系統的安全。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享