ThinkPHP6.0升级到6.1之后,文件上传报 Class ‘think\facade\Filesystem‘ not found 错误的解决方案

19 篇文章 0 订阅
13 篇文章 2 订阅

ThinkPHP6.0升级到6.1之后,文件上传报 Class ‘think\facade\Filesystem’ not found 错误,真够郁闷的。
在这里插入图片描述
那么,需要把之前的代码做点改动,之前的代码如下:


use think\facade\Filesystem;

public function index(){
        $uid = $this->request->middleware('uid');
        $files = request()->file('file');

        $res = [];// 存储上传失败的信息
        $res['success'] = [];
        $res['error'] = [];
        foreach($files as $file){
            $ext = $file->getOriginalExtension();
            //不同文件,储存不同的文件夹
            $folder = config('filesystem.disks.folder') . '/api/' . $ext; //存文件目录
            if(!file_exists($folder))mkdir($folder, 0700,TRUE);//如果文件夹不存在,则创建
            $savename = Filesystem::disk('public')->putFile($folder,$file);
			
			$getOriginalName = $file->getOriginalName();
			$getSize = $file->getSize();
			
            if (!$savename) {
                $res['error'][] =  $getOriginalName;
            }else{
                $savename = '/' . str_replace("\\","/",$savename);
                $uploadRes = (new ApiUploadFiles())->create([
                    'uid'=>$uid,
                    'file_name'=>$getOriginalName,
                    'file_size'=>$getSize,
                    'extension'=>$ext,
                    'url'=>$savename,
                ]);
                if($uploadRes){
                    $res['success'][] = [
                        'id'=>$uploadRes->id,
                        'name'=>$getOriginalName,
                        'path'=>Request::domain().'/'.$savename
                    ];
                }else{
                    $res['error'][] =  ['name'=>$getOriginalName];
                }
            }
        }

        return show($res,200);

    }

接口返回:
在这里插入图片描述

接下来将上传部分做个更改,来适配无Filesystem扩展的状态

use think\File;

public function index(){
        $uid = $this->request->middleware('uid');
        $files = request()->file('file');

        $res = [];// 存储上传失败的信息
        $res['success'] = [];
        $res['error'] = [];
        foreach($files as $file){
            $ext = $file->getOriginalExtension();

            $fileInfo = pathinfo($file);
            // 获取文件地址和名称
            $filePath = $fileInfo['dirname'] . '/' . $fileInfo['basename'];
            // 文件地址转文件类
            $fileUp = new File($filePath);
            //不同文件,储存不同的文件夹
            $folder = config('filesystem.disks.folder') . '/api/' . $ext.'/'.fdate('','Ymd'); //存文件目录

            if(!file_exists($folder))mkdir($folder, 0700,TRUE);//如果文件夹不存在,则创建

            $savename = $fileUp->md5() . '.' . $ext;

            $size = $file->getSize();
            $getOriginalName = $file->getOriginalName();

            $fileUp->move($folder, $folder.'/'.$savename);

            if (!$savename) {
                $res['error'][] =  $getOriginalName;
            }else{
                $savename = '/' . str_replace("\\","/",$folder.'/'.$savename);

                $uploadRes = (new ApiUploadFiles())->create([
                    'uid'=>$uid,
                    'file_name'=>$getOriginalName,
                    'file_size'=>$size,
                    'extension'=>$ext,
                    'url'=>$savename,
                ]);
                if($uploadRes){
                    $res['success'][] = [
                        'id'=>$uploadRes->id,
                        'name'=>$getOriginalName,
                        'path'=>Request::domain().$savename
                    ];
                }else{
                    $res['error'][] =  ['name'=>$getOriginalName];
                }
            }
        }

        return show($res,200);

    }

api接口返回

在这里插入图片描述

OK,完美解决!

另一种更简单的处理方式:

ThinkPHP6.0升级到6.1之后,文件上传报 Class ‘think\facade\Filesystem‘ not found 错误的另一种更简单的解决方案

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

upcto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值