TP5.2/6.0文件上傳採用TP3.2自定義命名

如圖,圈起來的地方原來用是call_user_func而不是用call_user_func_array

 

 

兩個方法的區別查手冊得知

 

 

代碼1、上傳接收方法public upload(){}

 

 

/**
* 公共上傳文件本地
* @param $filesize     文件大小
* @param $exts         文件擴展名
* @param $path         磁盤目錄
* @param $folder       上傳的文件夾
*/
public function uploadFile($filesize=0,$exts='jpg,png,gif,jpeg,rar,zip,avi,rmvb,3gp,flv,mp3,txt,doc,xls,ppt,pdf,xls,docx,xlsx,doc',$path='public',$folder='uploads')
{


    $filesize=$filesize?:1024*1024*1024 ;//換算成以M爲單位,設置附件上傳大小(TP單位byte);
    $exts=$exts?:'mp4';// 設置附件上傳類型


    $files = request()->file();
    try {
        validate(['UploadForm'=>"filesize:$filesize|fileExt:$exts|file"])->check(object2array($files));
        $savename = [];
        foreach($files as $file){
            $savename[] = Filesystem::disk("{$path}")->putFile("{$folder}", $file,'get_file_name');
        }


        $result['savename'] =  $savename;
        $result['status']=true;
        $result['upload_info']='文件上傳成功!';


    } catch (\Exception $e) {
        //上傳失敗獲取錯誤信息
        $result['status'] = false;
        $result['upload_info'] = $e->getMessage();
    }
    return $result;


}

 

代碼2、自定義文件命方法function get_file_name(){}

/**
* 獲取文件名,用ID+文件名+日期
*/
function get_file_name($arr=array()){
    $data=date('Ymd',time());
    $file=func_get_args();//獲取傳遞過來的參數,文件對象
    $filename=$data.(explode('.'.$file[0]->getOriginalExtension(),$file[0]->getOriginalName())[0]);//獲取原文件名,think\file\UploadedFile的類
    return $filename;
}

 

代碼3、上傳方法

/**
* 上傳圖片
*/
public function uploadFileImg(){
    $file_size=200*1024*1024 ;//換算成以M爲單位,設置附件上傳大小(TP單位byte);
    $fileInfo=$this->uploadFile($file_size,'jpg,png,gif,jpeg', 'public','mediaimg');
    dump($fileInfo);exit();
    $this->result($fileInfo, 0, '添加成功!');
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章