author:咔咔php
wechat:fangkangfk前端
直接擼代碼,看步驟:數組
前期準備工做:app
第一步:建立上傳圖片的配置文件ide
第二步:引入uoload這個工具類工具
<?php namespace app\data\util; class UploadUtil { /** * @var 文件信息think\file這個類 */ private $file; /** * @var 上傳圖片的目錄 */ private $path; /** * 上傳文件規則 */ // protected $validate =[ // 'size' => 500000, // 'ext' => 'jpg,png,gif,jpeg', // ]; /** * 文件上傳 * * @param file think\File * @path 上傳的目錄 upload\goods * @return array */ public function move($file,$path) { $this->file = $file; // 獲取上傳的文件名 $fileName = $this->getFileName($path); // 文件保存的地址 $save = $this->getFilePath($path); // 判斷保存的目錄是否存在 if(!file_exists($save)){ mkdir($save,777,true); } // 文件保存後的名字加類型 $image = $fileName['saveName'].'.'.$fileName['fileSuffix']; // 開始上傳 參數一:上傳路徑 參數二:文件名 $info = $file->validate(['size'=>20000000,'ext'=>'jpg,png,gif'])->move($save,$image); // 獲取上傳後的文件名 $this->path = $path.'/'.$image; if($info){ $resule = ['code'=>SUCCESS,'data'=>$this->path]; }else{ $resule = ['code'=>ERROR,'data'=>$file->getError()]; } return $resule; } /** * 配置保存路徑 * * @return array */ public function getFilePath($path) { return ROOT.'/'.$path; } /** * 獲取上傳文件的信息 名字,類型,類型 * * @return array */ public function getFileName() { // 獲取文件信息 $name = $this->file->getInfo('name'); // 問件名1.jpg 因此須要轉數組獲取 $fileName = explode('.',$name); return [ // 文件名 'formerlyName' => $fileName[0], // 保存後的文件名 'saveName' => $fileName[0].time(), // 文件後綴 'fileSuffix' => $fileName[1] ]; } /** * 保存後的文件路徑 * * @return array */ public function functionName($flag = true) { return ($flag) ? $this->path : ROOT.'/'.$this->path; } }
控制器獲取前端上傳的圖片信息this
$param這個參數是爲了獲取圖片放置位置,在下面就能夠清楚的明白spa
$fileinfo是過去圖片的信息,返回時think\File對象code
控制器將這倆個參數傳遞給server層orm
在server層接收到圖片信息,跟上傳類型,進行數據組裝,最後將參數返回給工具類
$type就是上傳類型,如video
$path就是上傳地址如:upload\video
uoload工具類,這套工具類只須要參數文件信息,跟上傳地址,其他的的什麼都不須要修改
<?php namespace app\data\util; class UploadUtil { /** * @var 文件信息think\file這個類 */ private $file; /** * @var 上傳圖片的目錄 */ private $path; /** * 上傳文件規則 */ // protected $validate =[ // 'size' => 500000, // 'ext' => 'jpg,png,gif,jpeg', // ]; /** * 文件上傳 * * @param file think\File * @path 上傳的目錄 upload\goods * @return array */ public function move($file,$path) { $this->file = $file; // 獲取上傳的文件名 $fileName = $this->getFileName($path); // 文件保存的地址 $save = $this->getFilePath($path); // 判斷保存的目錄是否存在 if(!file_exists($save)){ mkdir($save,777,true); } // 文件保存後的名字加類型 $image = $fileName['saveName'].'.'.$fileName['fileSuffix']; // 開始上傳 參數一:上傳路徑 參數二:文件名 $info = $file->move($save,$image); // 獲取上傳後的文件名 $this->path = $path.'/'.$image; return ($info) ? $this->path : false; } /** * 配置保存路徑 * * @return array */ public function getFilePath($path) { return ROOT.'/'.$path; } /** * 獲取上傳文件的信息 名字,類型,類型 * * @return array */ public function getFileName() { // 獲取文件信息 $name = $this->file->getInfo('name'); // 問件名1.jpg 因此須要轉數組獲取 $fileName = explode('.',$name); return [ // 文件名 'formerlyName' => $fileName[0], // 保存後的文件名 'saveName' => $fileName[0].time(), // 文件後綴 'fileSuffix' => $fileName[1] ]; } /** * 保存後的文件路徑 * * @return array */ public function functionName($flag = true) { return ($flag) ? $this->path : ROOT.'/'.$this->path; } }
最終圖片會上傳到這裏