| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | <?phpnamespace App\Service;use App\Service\Weixin\WeixinService;use Illuminate\Support\Facades\Storage;class FileUploadService extends Service{    //文件类型    const FILE_TYPE = [        'txt',        'jpg',        'png',        'gif',        'jpeg',        'zip',        'rar',        'xlsx',        'xls',        'xml'    ];    const tmp_dir = 'kq';    const tmp_dir_1 = 'upload_occ';    const string = '/image/';    const string_1 = '/api/uploadFiles/';    const string2 = 'qyadmin|';    const string3 = 'qyadmin/';    public function uploadFileForKq($file){        if(empty($file)) return [false, '请上传文件'];        // 获取文件相关信息        $ext = $file->getClientOriginalExtension();     // 扩展名        $realPath = $file->getRealPath();   //临时文件的绝对路径        $ext = strtolower($ext);        if (! in_array($ext, self::FILE_TYPE)){            $str = '文件格式为:';            foreach (self::FILE_TYPE as $value){                $str.= $value . ' ' ;            }            return [false,$str];        }        //文件名        $file_name = date("Ymd").time().rand(1000,9999);        $filename =  $file_name . '.' . $ext;        $dir = self::tmp_dir . '/' . $filename;        Storage::disk('public')->put($dir, file_get_contents($realPath));        return [true, self::string . $filename];    }    public function uploadFile($file){        if(empty($file)) return [false, '请上传文件'];        // 获取文件相关信息        $ext = $file->getClientOriginalExtension();     // 扩展名        $realPath = $file->getRealPath();   //临时文件的绝对路径        $ext = strtolower($ext);        if (! in_array($ext, self::FILE_TYPE)){            $str = '文件格式为:';            foreach (self::FILE_TYPE as $value){                $str.= $value . ' ' ;            }            return [false,$str];        }        $date = date("Y-m-d");        //文件名        $file_name = date("Ymd").time().rand(1000,9999);        $filename =  $file_name.'.' . $ext;        $dir = self::tmp_dir_1 . '/' . $date . '/' . $filename;        Storage::disk('public')->put($dir, file_get_contents($realPath));        return [true, self::string_1 . self::string2 . $filename];    }    //获取文件的位置oss    public function getFileShow($file_name,$expired = 3500){        $path = "";        if(empty($file_name)) return $path;        if(strpos($file_name, FileUploadService::string_1 . FileUploadService::string2) !== false){            $file_name = str_replace(FileUploadService::string_1 . FileUploadService::string2,'', $file_name);            $timestamp = substr($file_name, 0, 8); // 截取前八位数字            $date = \DateTime::createFromFormat('Ymd', $timestamp);            $date = $date->format('Y-m-d');            $savePath = self::string3 . $date . '/' . $file_name;            list($status,$path) = (new OssService())->getTemporaryUrl($savePath,$expired);        }        return $path;    }    public function uploadFileLocal($file){        if(empty($file)) return [false, '请上传文件'];        // 获取文件相关信息        $ext = $file->getClientOriginalExtension();     // 扩展名        $realPath = $file->getRealPath();   //临时文件的绝对路径        $ext = strtolower($ext);        if (! in_array($ext, self::FILE_TYPE)){            $str = '文件格式为:';            foreach (self::FILE_TYPE as $value){                $str.= $value . ' ' ;            }            return [false,$str];        }        // 上传文件        $file_name = date("Ymd").time().rand(1000,9999);        $filename =  $file_name.'.' . $ext;        // 使用我们新建的uploads本地存储空间(目录)        Storage::disk('public')->put('upload_files/'.$filename, file_get_contents($realPath));        return [true, self::string . $filename];    }    public function createOssUpload($file){        if(! is_array($file) && empty($file)) return;        foreach ($file as $filename){            $filename = str_replace(FileUploadService::string_1.FileUploadService::string2,'', $filename);            $timestamp = substr($filename, 0, 8); // 截取前八位数字            $date = \DateTime::createFromFormat('Ymd', $timestamp);            $date = $date->format('Y-m-d');            $dir = FileUploadService::tmp_dir_1 . '/' . $date . '/' . $filename;            $realPath = storage_path() . "/app/public/" . $dir;            $savePath = self::string3 . $date . '/' . $filename;            list($status,$msg) = (new OssService())->uploadFile($realPath,$savePath);            if($status) Storage::disk('public')->delete($dir);        }    }    public function createOssUploadOld($file){        if(! is_array($file) && empty($file)) return;        foreach ($file as $filename){            if(strpos($filename, FileUploadService::string_1.FileUploadService::string2) !== false){                $filename = str_replace(FileUploadService::string_1.FileUploadService::string2,'',$filename);                $timestamp = substr($filename, 0, 8); // 截取前八位数字                $date = \DateTime::createFromFormat('Ymd', $timestamp);                $date = $date->format('Y-m-d');                $delPath = self::string3 . $date . '/' . $filename;                list($status,$msg) = (new OssService())->deleteFile($delPath);//                if(! $status) return [false , $msg];            }        }    }    public function delLocalPublicFile($filename){        $path = storage_path('app/public/kq/' . $filename);        // 将本地路径转换为存储路径        $storagePath = str_replace(storage_path('app/public/'), '', $path);        // 检查文件是否存在        if (Storage::disk('public')->exists($storagePath)) {            // 文件存在,可以进行删除操作            Storage::disk('public')->delete($storagePath);        }    }    public function createOssUploadWx($file){        if(! is_array($file) && empty($file)) return;        foreach ($file as $filename){            $dir = WeixinService::dir . $filename;            $realPath = storage_path() . "/app/public/" . $dir;            $savePath = self::string3 . WeixinService::dir . $filename;            list($status,$msg) = (new OssService())->uploadFile($realPath,$savePath);            if($status) Storage::disk('public')->delete($dir);        }    }    public function createOssDeleteWx($file){        if(! is_array($file) && empty($file)) return;        foreach ($file as $filename){            $delPath = self::string3 . WeixinService::dir . $filename;            list($status,$msg) = (new OssService())->deleteFile($delPath);        }    }    //获取文件的位置oss    public function getFileShowWx($file_name,$expired = 3500){        $path = "";        if(empty($file_name)) return $path;        $savePath = self::string3 . WeixinService::dir . $file_name;        list($status,$path) = (new OssService())->getTemporaryUrl($savePath,$expired);        return $path;    }}
 |