文件上傳
1.前言
在 ThinkPHP
中內(nèi)置的上傳只是將文件上傳到本地服務(wù)器,會在 runtime/storage
目錄下生成以當(dāng)前日期為目錄名的子目錄,以微秒時(shí)間的 md5
值為文件名的文件,本小節(jié)主要介紹如何使用 ThinkPHP
內(nèi)置的文件上傳功能,在實(shí)際項(xiàng)目中如果文件上傳比較多,一般會單獨(dú)存儲在第三方存儲平臺。
2.新建注冊路由
//文件上傳界面
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
文件可以按照圖中格式引入,從圖中可以看到注冊信息提交至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)過編碼之后的名稱,一般具有唯一性,目的是為了防止重名文件被覆蓋的問題。
6.視頻演示
7.小結(jié)
本小節(jié)介紹了如何使用 ThinkPHP
內(nèi)置的文件上傳方法,可以很方便的將文件上傳至指定的目錄,然后文件名是經(jīng)過唯一性編碼處理的,目的是為了防止重名文件覆蓋造成文件丟失,需要注意的是實(shí)際項(xiàng)目中如果文件數(shù)量特比多可能造成服務(wù)器空間不足,導(dǎo)致服務(wù)器無法正常工作,這種情況建議使用第三方存儲服務(wù)器,主服務(wù)器只存儲文件的路徑即可。