tp6上传文件大小超过了最大值+验证文件上传大小和格式函数

news/2025/2/22 1:45:37/

问题:

最近用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 = 20

2、 确认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'=>'上传图片格式不正确'];}}


http://www.ppmy.cn/news/1574026.html

相关文章

力扣hot100——轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 解法思路: // 空间换时间:轮转问题看作为平移,轮转就是转一圈,如果拉直这个轮的话,其实就是所有数字向后平移k // 建立一个大小…

[Windows] Win7也能控制安卓手机屏幕(手机镜像投屏):scrcpy

Win7也能控制安卓手机屏幕(手机镜像投屏):scrcpy 链接:https://pan.xunlei.com/s/VOJGlhQkX9mNqCYsM2cMbYxsA1?pwdm9wq# 系统平台:Windows 7/10/11 (Win7系统需打开“Win7”文件夹进行操作) …

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析④】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase04 作者:车端域控测试工程师 更新日期:2025年02月17日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-004测试用例 用例ID测试场景验证要点参考条款预期结果TC11-004无效子功能码检测发送0x11 …

【论文阅读笔记】浅谈深度学习中的知识蒸馏 | 关系知识蒸馏 | CVPR 2019 | RKD

目录 一 方法 1 常规知识蒸馏 2 关系知识蒸馏 2.1 Distance-wise distillation loss 2.2 Angle-wise distillation loss 2.3 Training with RKD 2.4 Distillation target layer 3 实验 论文题目:Relational Knowledge Distillation 论文地址:ht…

【tips】el-select没有赋值但是初始化回显了

页面初始化&#xff0c;下拉框的list是异步的&#xff0c;且没有默认选中值。别的都正常&#xff0c;就是有一个下拉框竟然回显了。。。 原来是这样写的。 <div>serverID-{{form.serverID}}</div> <el-select class"filter-item" v-model"form.…

​44页PDF | 天津大学深度解读DeepSeek:原理与效应(附下载)

一、前言 这份报告深入解读了DeepSeek大语言模型的技术原理、发展效应及未来展望。报告首先回顾了生成式AI的发展历程&#xff0c;从2014年的Attention机制到2024年的o1/R1技术&#xff0c;展示了AI从统计方法到Transformer架构、再到强化学习与推理能力的演进。接着&#xff…

Spring MVC 的核心以及执行流程

Spring MVC的核心 Spring MVC是Spring框架中的一个重要模块&#xff0c;它采用了经典的MVC&#xff08;Model-View-Controller&#xff09;设计模式。 MVC是一种软件架构的思想&#xff0c;它将软件按照模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;…

手机控制电脑远程关机

远程看看软件兼容iOS和Android设备&#xff0c;该软件除了能通过电脑远程关闭另一台电脑外&#xff0c;您还可以通过它在手机上远程关闭公司的电脑。您可以按照以下步骤进行操作以实现电脑远程关机&#xff1a; 步骤1.在手机应用商店搜索“远程看看”进行软件安装&#xff0c;…