• 當前位置:首頁 > IT技術 > Web編程 > 正文

    【TP5項目統一規范】圖片上傳
    2021-09-29 14:53:43

    author:咔咔

    直接擼代碼,看步驟:

    前期準備工作:

    第一步:創建上傳圖片的配置文件

    【TP5項目統一規范】圖片上傳_文件名

    第二步:引入uoload這個工具類

    【TP5項目統一規范】圖片上傳_TP5項目統一規范_02

    <?php

    namespace appdatautil;

    class UploadUtil
    {
    /**
    * @var 文件信息thinkfile這個類
    */
    private $file;
    /**
    * @var 上傳圖片的目錄
    */
    private $path;
    /**
    * 上傳文件規則
    */
    // protected $validate =[
    // 'size' => 500000,
    // 'ext' => 'jpg,png,gif,jpeg',
    // ];

    /**
    * 文件上傳
    *
    * @param file thinkFile
    * @path 上傳的目錄 uploadgoods
    * @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;
    }
    }




    控制器獲取前端上傳的圖片信息

    $param這個參數是為了獲取圖片放置位置,在下面就可以清楚的明白

    $fileinfo是過去圖片的信息,返回時thinkFile對象

    控制器將這倆個參數傳遞給server層

    【TP5項目統一規范】圖片上傳_文件保存_03

    在server層接收到圖片信息,跟上傳類型,進行數據組裝,最后將參數返回給工具類

    $type就是上傳類型,如video

    $path就是上傳地址如:uploadvideo

    【TP5項目統一規范】圖片上傳_文件名_04

    uoload工具類,這套工具類只需要參數文件信息,跟上傳地址,其余的的什么都不需要修改

    <?php

    namespace appdatautil;

    class UploadUtil
    {
    /**
    * @var 文件信息thinkfile這個類
    */
    private $file;
    /**
    * @var 上傳圖片的目錄
    */
    private $path;
    /**
    * 上傳文件規則
    */
    // protected $validate =[
    // 'size' => 500000,
    // 'ext' => 'jpg,png,gif,jpeg',
    // ];

    /**
    * 文件上傳
    *
    * @param file thinkFile
    * @path 上傳的目錄 uploadgoods
    * @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;
    }
    }


    最終圖片會上傳到這里

    【TP5項目統一規范】圖片上傳_上傳_05

    本文摘自 :https://blog.51cto.com/k

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码