tp6上传文件大小超过了最大值+验证文件上传大小和格式函数
问题:
最近用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'=>'上传图片格式不正确'];}}
相关文章:
tp6上传文件大小超过了最大值+验证文件上传大小和格式函数
问题: 最近用tp6的文件上传方法上传文件时报文件过大错误。如下所示: $file $this->request->file(file);{"code": 1,"msg": "上传文件大小超过了最大值!","data": {"code": 1,&q…...
解决 Mac 只显示文件大小,不显示目录大小
前言 在使用 mac 的时候总是只显示文件的大小,不显示文件夹的大小,为了解决问题可以开启“计算文件夹”。 步骤 1.进入访达 2.工具栏点击“显示”选项,点击 “查看显示选项” 3.勾选 显示“资源库"文件夹 和 计算所有大小 或者点击…...
分布式大语言模型服务引擎vLLM论文解读
论文地址:Efficient Memory Management for Large Language Model Serving with PagedAttention 摘要 大语言模型(LLMs)的高吞吐量服务需要一次对足够多的请求进行批处理。然而,现有系统面临困境,因为每个请求的键值…...
快速入门——Vue框架快速上手
学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:8.Vue框架快速上手_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 第一节:前端环境准备 编码工具VSCode【www.code.visualstudio.com】/WebStorm也可&am…...
机器学习,我们主要学习什么?
机器学习的发展历程 机器学习的发展历程,大致分为以下几个阶段: 1. 起源与早期探索(20世纪40年代-60年代) 1949年:Hebb提出了基于神经心理学的学习机制,开启了机器学习的先河1950年代:机器学习的…...
安卓burp抓包,bypass ssl pinning
好久好久没有发东西了。主要是懒。。。 这几天在搞apk渗透,遇到了burp无法抓包问题,觉得可以写下来。 问题描述 1. 一台安卓手机,装了面具,可以拿到root 2. 电脑上有burp,设置代理 3.手机和电脑连同一个网段&…...
【如何基于Debian构建Kali Linux】
如何基于Debian构建Kali Linux 修改apt源获取Kali的apt密钥更新并安装Kali Linux软件包添加非root用户 在Linux系统的应用领域中,Kali Linux因其在渗透测试、安全审计等方面的出色表现而备受关注。Kali Linux是一个基于Debian的Linux发行版。接下来,将介…...
Hopper架构 GEMM教程
一 使用 1.1 makefile compile:nvcc -arch=sm_90a -lcuda -lcublas -std=c++17 matmul_h100_optimal.cu -o testrun:./test加入-lcublas,不然会有函数无法被识别 二 代码分析 2.1 kernel外参数分析 2.1.1 基本参数 constexpr int BM = 64*2;constexpr int BN = 256;cons…...
CV -- 基于GPU版CUDA环境+Pycharm YOLOv8 目标检测
目录 下载 CUDA 下载 cuDNN 下载 anaconda 安装 PyTorch pycharm 搭配 yolo 环境并运行 阅读本文须知,需要电脑中有 Nvidia 显卡 下载 CUDA 打开 cmd ,输入 nvidia-smi ,查看电脑支持 CUDA 版本: 我这里是12.0,进入…...
ELK8.17部署(Ubantu24x64)
检查java环境 ELK8.x不支持java8 若无环境可执行 sudo apt install openjdk-17-jre-headless 准备安装包 官网下载地址: ELK products 搜Elasticsearch、Kibana、Logstash、Filebeat versions需一致,这里使用8.17.0 Elasticsearch Kibana Logstash Filebeat e…...
Python glob模块使用示例代码
Python 的 glob 模块位于标准库中,专门用于在文件系统中进行 文件路径模式匹配(与 Shell 中的通配符匹配类似)。它可以根据 通配符(如 *、? 和 [])来查找符合条件的文件路径。 1. glob 模块的核心功能 路径模式匹配:根据指定的通配符模式,匹配对应的文件路径。递归搜索…...
npm、pnpm和yarn有什么区别
1. 性能和速度 npm:在较早的版本中,速度较慢,尤其是在安装大型依赖集时。自npm 5以后的版本引入了缓存机制,性能有所提升。yarn:由Facebook开发,主要目标是提高安装速度。使用了缓存和并行安装(…...
Java 基础面试
final、finalize 和 finally 的不同之处? Final:是一个修饰符,可以修饰变量、方法和类。如果 final 修饰变量,意味着该变量的值在初始化后不 能被改变。Finalize:方法是在对象被回收之前调用的方法, 给对象…...
ac的dhcp池里option43配错导致ap无法上线问题排查过程
dhcp池里ac地址配错,导致ap无法上线问题排查过程 问题:ap手动设置ac的ip正常注册在线,但dhcp获得ip和ac地址发现无法在ac上注册成功。 组网: ac旁路结构,路由器lan口地址172.16.1.1,开dhcp服务࿰…...
第1章:LangChain4j的聊天与语言模型
LangChain4J官方文档翻译与解析 目标文档路径: https://docs.langchain4j.dev/tutorials/chat-and-language-models/ 语言模型的两种API类型 LangChain4j支持两种语言模型(LLM)的API: LanguageModel:这种API非常简单,…...
Cython学习笔记1:利用Cython加速Python运行速度
Cython学习笔记1:利用Cython加速Python运行速度 CythonCython 的核心特点:利用Cython加速Python运行速度1. Cython加速Python运行速度原理2. 不使用Cython3. 使用Cython加速(1)使用pip安装 cython 和 setuptools 库(2&…...
【从0做项目】Java音缘心动(1)———项目介绍设计
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:项目结果展示 一:音乐播放器Web网页介绍 二:前期准备工作&…...
智慧农业新生态 | 农业数字化服务平台——让土地生金,让服务无忧
一部手机管农事,从播种到丰收,全链路数字化赋能! 面向农户、农机手、农服商、农资商打造的一站式农业产业互联网平台,打通农资交易、农机调度、农服管理、技术指导全场景闭环,助力乡村振兴提效增收。 三大核心场景&am…...
C++编程,#include <iostream>详解,以及using namespace std;作用
在C编程中,#include <iostream> 是用来包含输入/输出流头文件的预处理指令。它允许程序使用标准的输入/输出对象如 std::cout 和 std::cin,以便与标准输入和输出流进行交互。这一头文件是编写输入输出操作时必不可少的部分。 讲到这里,…...
jetbrains IDEA集成大语言模型
一、CodeGPT CodeGPT是由CSDN打造的一款生成式AI产品,专为开发者量身定制。它能够提供强大的技术支持,帮助开发者在学习新技术或解决实际工作中的各种计算机和开发难题1。 idea集成 1.在线安装:直接在线安装 2.离线安装 JetBrains Mar…...
AI治理实践:平衡技术价值与社会责任
1. 人工智能治理的核心矛盾当算法开始决定谁获得贷款、医疗资源如何分配、甚至刑事判决的量刑建议时,我们不得不面对一个根本性问题:如何在释放AI技术价值的同时,确保其发展不脱离人类社会的责任框架?过去三年参与金融风控AI落地的…...
Docker 27沙箱隔离增强:金融级容器上线前必做的7项合规审计项(等保2.0+GDPR双标覆盖)
更多请点击: https://intelliparadigm.com 第一章:Docker 27沙箱隔离增强的合规性演进与金融场景适配 Docker 27 引入了基于 Linux user_namespaces、seccomp-bpf v2 和 eBPF-based cgroup v2 策略引擎的深度沙箱强化机制,显著提升容器运行时…...
Little Navmap如何通过分层渲染架构实现飞行导航地图的实时绘制
Little Navmap如何通过分层渲染架构实现飞行导航地图的实时绘制 【免费下载链接】littlenavmap Little Navmap is a free flight planner, navigation tool, moving map, airport search and airport information system for Flight Simulator X, Microsoft Flight Simulator …...
观测大模型API用量与成本对于持续运营项目的重要性
观测大模型API用量与成本对于持续运营项目的重要性 1. 长期调用场景下的成本挑战 在持续运营的项目中,大模型API调用往往不是一次性行为,而是随着用户增长和功能迭代呈现长期累积的趋势。这种情况下,开发者面临两个核心挑战:一是…...
ROS导航避坑指南:手把手教你正确发布和使用Odometry消息(附Python/C++代码)
ROS导航避坑指南:手把手教你正确发布和使用Odometry消息 在机器人导航开发中,里程计(Odometry)消息的正确处理往往是决定定位精度的关键因素。许多开发者在TurtleBot3、Husky等平台上进行自主导航开发时,都会遇到定位漂移、坐标系混乱等问题&…...
深入解读C++中的指针变量
针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是:用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C中用“*”符号表示指向,例如,i_pointer是一个指针变量,而*i_po…...
ERC PATHCHK案例分享
本文跟大家分享一下ERC(electrical rule checking)检查时的一个小案例。 ERC默认会检查gate是否连接power & ground。如果gate并未同时连接VDD和VSS,那么erc就会报如下图所示violation。 如下图所示,可以发现后一级的gate会连接在前一级mos管的drain(分别是pmos和nmo…...
PINN新手避坑指南:从Burgers方程案例看训练不稳定、梯度爆炸那些事儿
PINN实战避坑手册:Burgers方程训练稳定性深度解析 物理信息神经网络(PINN)近年来在偏微分方程求解领域崭露头角,但许多开发者在复现论文结果时常常遭遇训练不稳定、预测结果离奇的困境。本文将以经典的Burgers方程为例,…...
模板方法管理化技术中的模板方法计划模板方法实施模板方法验证
模板方法管理化技术是一种广泛应用于软件开发和项目管理的高效模式,其核心在于通过标准化流程(模板方法计划、实施与验证)提升可复用性和可控性。这一技术尤其适用于需要快速迭代或复杂逻辑拆分的场景,例如企业级系统开发或自动化…...
Arm Neoverse MMU S3内存管理单元错误分析与解决方案
1. Arm Neoverse MMU S3系统内存管理单元深度解析在现代计算机体系结构中,内存管理单元(MMU)扮演着至关重要的角色。作为连接处理器核心与内存系统的桥梁,MMU负责虚拟地址到物理地址的转换、内存访问权限控制以及缓存一致性维护等…...
