【TP5項目統一規範】圖片上傳

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;
    }
}

 

最終圖片會上傳到這裏

相關文章
相關標籤/搜索