tp6上传文件大小超过了最大值+验证文件上传大小和格式函数
- 其他
- 2025-08-25 13:06:02

问题:
最近用tp6的文件上传方法上传文件时报文件过大错误。如下所示:
$file = $this->request->file('file'); { "code": 1, "msg": "上传文件大小超过了最大值!", "data": { "code": 1, "line": 1232, "file": "D:\\myweb\\ytems\\vendor\\topthink\\framework\\src\\think\\Request.php", "message": "上传文件大小超过了最大值!" } }解决:
1、php.ini 配置
修改 upload_max_filesize = 10M 值为合适的大小
;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir ;upload_tmp_dir = ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 10M ; Maximum number of files that can be uploaded via a single request max_file_uploads = 202、 确认TP6框架的文件上传限制配置
TP6框架本身对文件上传有一定的限制,这个限制可以在配置文件中进行设置。你需要检查并修改以下配置文件:
config/filesystem.php:这个文件通常包含了文件上传的相关配置。你可以找到类似max_filesize的配置项,并将其设置为一个更大的值。例如: return [ // ... 'disks' => [ 'public' => [ // ... 'max_filesize' => '20M', // 设置为你需要的最大值 ], // ... ], // ... ];3、构建验证文件上传大小和格式的函数
调用函数:
$file = $this->request->file('file'); //校验图片 $checkFile = checkUploadFile($file, 2, ['jpg','jpeg','png']); if($checkFile['code'] != 200){ return error($checkFile['msg']); } /** * 判断上传文件是否合法 如:php文件不可上传 * * @author * @param $file * @param $only_php_check 是否仅检查非php文件 * @param $allowed_types 允许的文件类型 * @param $allowed_extensions 允许的文件扩展名 * @param $from_allowed_size 允许的文件大小 单位 M * @return array */ function checkUploadFile($file, $from_allowed_size=2, $allowed_extensions=[], $only_php_check=false) { $allowed_size = $from_allowed_size * 1024 * 1024; if (!isset($file)) { return false; } $check_php = true; //允许的文件类型(mimeType): application/vnd.ms-excel //不允许的类型 text/x-php $mime_type = strtolower($file->getMime());//text/x-php $extension = strtolower($file->getOriginalExtension());//php $file_size = $file->getSize(); if($mime_type == 'text/x-php' || $extension == 'php'){ $check_php = false;//上传文件为php文件 } if($only_php_check){//仅判断是否为php文件的话 此时就返回结果。终止后续判断了。 if($check_php){ return ['code'=>200, 'msg'=>'上传成功']; }else{ return ['code'=>4003, 'msg'=>'非法上传文件'];//为 php文件 } } // 允许的MIME类型数组和扩展名数组 if(!$allowed_extensions){ $allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'xls']; $allowed_types = ['image/jpeg', 'image/png', 'image/gif', 'application/vnd.ms-excel']; }else{ $allowed_types = []; foreach ($allowed_extensions as $k=>&$v) { switch($v){ case 'jpg': case 'jpeg': $allowed_types[$k] = 'image/jpeg'; break; case 'png': $allowed_types[$k] = 'image/png'; break; case 'gif': $allowed_types[$k] = 'image/gif'; break; case 'xls': $allowed_types[$k] = 'application/vnd.ms-excel'; break; default: $allowed_types[$k] = $v; break; } } } if($file_size > $allowed_size){ return ['code'=>4002, 'msg'=>'上传文件尺寸不可大于'.$from_allowed_size.'M']; } // 检查MIME类型和扩展名是否都在允许的列表中 if (in_array($mime_type, $allowed_types) && in_array($extension, $allowed_extensions)) { return ['code'=>200, 'msg'=>'上传成功']; } else { return ['code'=>4001, 'msg'=>'上传图片格式不正确']; } }tp6上传文件大小超过了最大值+验证文件上传大小和格式函数由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“tp6上传文件大小超过了最大值+验证文件上传大小和格式函数”