文件上傳
1.前言
在 ThinkPHP
中內置的上傳只是將文件上傳到本地服務器,會在 runtime/storage
目錄下生成以當前日期為目錄名的子目錄,以微秒時間的 md5
值為文件名的文件,本小節主要介紹如何使用 ThinkPHP
內置的文件上傳功能,在實際項目中如果文件上傳比較多,一般會單獨存儲在第三方存儲平臺。
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
表示調用模板引擎。
4.新建 html 模板
如下圖所示,在 view\file
目錄中新建 index.html
模板文件:
Tips: 模板文件可根據自己需求定義,
css
、js
文件可以按照圖中格式引入,從圖中可以看到注冊信息提交至file/upload
中。
5.定義文件上傳處理方法
/**
* 文件上傳接收
* @return \think\response\Json
*/
public function upload(){
//接收文件
$file = request()->file('file');
halt($file);
//將文件上傳到服務器文件目錄
$filename = Filesystem::putFile('study',$file);
return json("保存成功");
}
文件上傳界面如下:
如下圖所示,是上傳之后的文件:
Tips: 文件上傳之后的文件名是經過編碼之后的名稱,一般具有唯一性,目的是為了防止重名文件被覆蓋的問題。
6.視頻演示
7.小結
本小節介紹了如何使用 ThinkPHP
內置的文件上傳方法,可以很方便的將文件上傳至指定的目錄,然后文件名是經過唯一性編碼處理的,目的是為了防止重名文件覆蓋造成文件丟失,需要注意的是實際項目中如果文件數量特比多可能造成服務器空間不足,導致服務器無法正常工作,這種情況建議使用第三方存儲服務器,主服務器只存儲文件的路徑即可。
Tips: 代碼倉庫
Excel導入學生信息
Excel導出學生信息
后臺處理數據