Laravel操作上传文件的方法

Laravel操作上传文件的方法

1、获取上传的文件

$file=$request->file('file');

2、获取上传文件的文件名(带后缀,如abc.png)

$filename=$file->getClientOriginalName();

3、获取上传文件的后缀(如abc.png,获取到的为png)

$fileextension=$file->getClientOriginalExtension();

4、获取上传文件的大小

$filesize=$file->getClientSize();

5、获取缓存在tmp目录下的文件名(带后缀,如php8933.tmp)

$filaname=$file->getFilename();

6、获取上传的文件缓存在tmp文件夹下的绝对路径

$realpath=$file->getRealPath();

7、将缓存在tmp目录下的文件移到某个位置,返回的是这个文件移动过后的路径

$path=$file->move(path,newname);

move()方法有两个参数,第一个参数是文件移到哪个文件夹下的路径,第二个参数是将上传的文件重新命名的文件名

8、检测上传的文件是否合法,返回值为true或false

$file->isValid()

上传到本地服务器


$file = $request->file('image');
//验证是否上传成功
if ($file->isValid()) {
    $originalName = $file->getClientOriginalName();// 原文件名
    $ext = $file->getClientOriginalExtension();// 扩展名
    $type = $file->getClientMimeType();
    $realPath = $file->getRealPath();// 临时绝对路径

    $fileName = date('Ymd').'/'.uniqid().'.'.$ext;// 自定义文件名

    //存储
    $bool = Storage::disk('upload')->put($fileName, file_get_contents($realPath));
    dd($bool);
}

文件上传到第三方平台(OSS/七牛云)

安装vendor扩展: composer require tinymeng/uploads -vvv

TinyMeng扩展(下载以及使用方法)")

use tinymeng\tools\Strings;

    /**
     * Name: 文件上传
     * Author: Tinymeng <666@majiameng.com>
     * @param $data
     * @return bool|string
     * @throws \Exception
     */
    protected function uploadFile($data){
        $file=$request->file('file');
        $save_dir = "file";
        //获取文件信息
        $data = [
            'type'=>$this->type,
            'save_dir'=>save_dir,
            'file_name'=>$file->getClientOriginalName(),
            'file_type'=>$file->file_type,
            'file_ext'=>$file->getClientOriginalExtension(),
            'file_size'=>$file->getClientSize(),
        ];
        $data['file_md5'] = md5(implode(',',$data));
        //使用file_md5,查询数据库是否存在此文件
        //如有文件返回文件信息,没有上传到oss
        try{
            //生成文件存储路径
            $filePath = $data['save_dir'] . '/' . date('Y-m-d', time()) . '/';//图片路径
            $saveFileName = Strings::generateRandomString(16) . '.' . $data['file_ext'];//图片名称+扩展名
            $saveFilePath = $filePath . $saveFileName;   //路径+图片名称
            $tmp_name = $this->file->getRealPath();//上传的文件缓存在tmp文件夹下的绝对路径

            //文件存储到第三方
            $config = config('params.oss.img-meng');//请查看'https://github.com/majiameng/uploads'配置
            $drive = Upload::oss($config);//上传到阿里云oss
            //$drive = Upload::qiniu($config);//上传到七牛云
            $result = $drive->uploadFile($saveFilePath, $tmp_name );//file上传文件
            if($result === true){
                return $saveFilePath;
            }
            return false;
        }catch (\Exception $exception){
            CommonReturn::fail(StatusCode::COMMON_CAPTCHA_INVALID,$exception->getMessage());
        }
    }
Last modification:October 18th, 2019 at 06:17 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment