文件上傳
1.前言
在 ThinkPHP 中內(nèi)置的上傳只是將文件上傳到本地服務(wù)器,會(huì)在 runtime/storage 目錄下生成以當(dāng)前日期為目錄名的子目錄,以微秒時(shí)間的 md5 值為文件名的文件,本小節(jié)主要介紹如何使用 ThinkPHP 內(nèi)置的文件上傳功能,在實(shí)際項(xiàng)目中如果文件上傳比較多,一般會(huì)單獨(dú)存儲(chǔ)在第三方存儲(chǔ)平臺(tái)。
2.新建注冊(cè)路由
//文件上傳界面
Route::get('file','file/index');
//文件上傳
Route::post('upload','file/upload');
如下圖所示:

3.新建控制器和文件上傳界面方法
/**
* 文件上傳界面
* @return string
*/
public function index(){
return View::fetch("file/index");
}
如下圖所示:

Tips: 其中
View::fetch表示調(diào)用模板引擎。
4.新建 html 模板
如下圖所示,在 view\file 目錄中新建 index.html 模板文件:

Tips: 模板文件可根據(jù)自己需求定義,
css、js文件可以按照?qǐng)D中格式引入,從圖中可以看到注冊(cè)信息提交至file/upload中。
5.定義文件上傳處理方法
/**
* 文件上傳接收
* @return \think\response\Json
*/
public function upload(){
//接收文件
$file = request()->file('file');
halt($file);
//將文件上傳到服務(wù)器文件目錄
$filename = Filesystem::putFile('study',$file);
return json("保存成功");
}
文件上傳界面如下:

如下圖所示,是上傳之后的文件:

Tips: 文件上傳之后的文件名是經(jīng)過(guò)編碼之后的名稱,一般具有唯一性,目的是為了防止重名文件被覆蓋的問(wèn)題。
6.視頻演示
7.小結(jié)
本小節(jié)介紹了如何使用 ThinkPHP 內(nèi)置的文件上傳方法,可以很方便的將文件上傳至指定的目錄,然后文件名是經(jīng)過(guò)唯一性編碼處理的,目的是為了防止重名文件覆蓋造成文件丟失,需要注意的是實(shí)際項(xiàng)目中如果文件數(shù)量特比多可能造成服務(wù)器空間不足,導(dǎo)致服務(wù)器無(wú)法正常工作,這種情況建議使用第三方存儲(chǔ)服務(wù)器,主服務(wù)器只存儲(chǔ)文件的路徑即可。
愛(ài)因詩(shī)賢 ·
2025 imooc.com All Rights Reserved |