隨著網路的不斷發展,越來越多的網站需要實現檔案上傳功能。在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/,同時設定了子目錄名稱的命名規則為依日期(年月日)來命名。
二、實作檔案上傳功能
在設定好檔案上傳參數之後,就可以開始實作檔案上傳功能了。在控制器中編寫以下程式碼:
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()方法進行檔案上傳,並傳回上傳成功或上傳失敗的結果。
三、頁面實作
最後,我們需要在頁面上實作檔案上傳功能,程式碼如下:
<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>
這裡我們在頁面上新增了一個form表單,上傳檔案的input標籤的name值為'image',接著使用jQuery的ajax()方法將form資料以FormData方式上傳到控制器中,在上傳成功或失敗後進行對應的提示。
四、總結
透過上述程式碼實現,我們已經成功在ThinkPHP6中實現檔案上傳功能。同時,我們也要注意安全性,確保使用者上傳的文件格式正確、大小合適,避免上傳的文件對系統造成危害,保障使用者和系統的安全。
以上是如何實作ThinkPHP6中的檔案上傳功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!