隨著互聯網的不斷發展,越來越多的網站需要實現文件上傳功能。在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中的文件上傳功能的詳細內容,更多請關注www.xfxf.net其它相關文章!






