文件上傳(改良版)

??開發(fā)當中文件上傳和下載是必不可少的兩個常用接口,基于TP5的接口如下:

注意點:移動文件是需要絕對路徑,訪問文件時需要相對路徑

單文件file格式上傳

    /**
    *單文件上傳
    *[file] file 上傳文件的字段
    *[string] folder 文件保存的子級文件夾
    **/
    public function SingleUpload(){

        // 獲取表單上傳文件
        $files = request()->file('file');
        if (!is_object($files)) {
            CommonFunc::api_error("20000", "參數(shù)錯誤");
        }
        $category = pathinfo($files->getInfo('name'), PATHINFO_EXTENSION);
        $dir_public = 'uploads/'.input('post.folder')."/".$category.'/'.date('Y-m-d', time())."/";
        if(!is_dir($dir_public)){
            mkdir($dir_public,0777,true);
        }
        $dir_root = ROOT_PATH ."public" . DS  . $dir_public;
        $origin = sha1($files->getInfo('name'));
        $info = $files->move($dir_root , $origin);

        if($info){
            $path =  "/".$dir_public . $origin .".". $info->getExtension();
        }else{
            return CommonFunc::api_error("20000" , "操作失敗");
        }
        CommonFunc::api_export($path);

多文件file[]數(shù)組格式上傳

    /**
    *多文件上傳
    *[array] file[] 上傳文件的字段,注意:數(shù)組形式
    *[string] folder 文件保存的子級文件夾
    **/
    public function MultiUpload(){

        // 獲取表單上傳文件[]
        $files = request()->file('file');
        if (!is_array($files)) {
            CommonFunc::api_error("20000", "參數(shù)錯誤");
        }

        foreach ($files as $value) {
            $category = pathinfo($value->getInfo('name'), PATHINFO_EXTENSION);
            $dir_public = 'uploads/'.input('post.folder')."/".$category.'/'.date('Y-m-d', time())."/";
            if(!is_dir($dir_public)){
                mkdir($dir_public,0777,true);
            }
            $dir_root = ROOT_PATH ."public" . DS  . $dir_public;
            $origin = sha1($value->getInfo('name'));
            $info = $value->move($dir_root , $origin);
            if($info){
                $path[] =  "/".$dir_public . $origin .".". $info->getExtension();
            }else{
                return CommonFunc::api_error("20000" , "操作失敗");
            }
        }
        $path = implode(',', $path);
        CommonFunc::api_export($path);

    }

圖片以base64格式上傳

    public function fileUpload()
    {
        // 獲取圖片的base64編碼
        $base64_img = trim($this->post['img']);
        //圖片路徑
        $dir_public = "uploads/images/" . date('Y-m-d', time()) . "/";
        $dir_root = ROOT_PATH . "public" . DS . $dir_public;
        if(!file_exists($dir_root))
        {
            mkdir($dir_root);
        }
        if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_img, $result))
        {
            $type = $result[2];
            if(in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png'))){
                $origin = sha1((microtime(true) + rand(1, 10000)) . $this->admin['uid']);
                $new_file = $dir_root. $origin. '.' .$type;
                if(file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)))){
                    $img_path = "/" . $dir_public . $origin . "." . $type;
                }else{
                    CommonFunc::api_error("20000" , "圖片上傳失??!");
                }
            }else{
                //文件類型錯誤
                CommonFunc::api_error("20000" , "文件類型錯誤!");
            }
        }else{
            //文件錯誤
            CommonFunc::api_error("20000" , "文件錯誤!");
        }
        $path = array($img_path);
        CommonFunc::api_export([
            "list" => $path
        ]);
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容