<?php// 看php.ini,查到一些基本信息。phpinfo();
// $_FILES: 文件上传变量,超全局的变量数组, 保存着所有与文件上传的相关信息printf('<pre>%s</pre>', print_r($_FILES, true));// 是一个二维数组
<?php// $_FILES: 文件上传变量,超全局的变量数组, 保存着所有与文件上传的相关信息printf('<pre>%s</pre>', print_r($_FILES, true));?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传</title></head><body><!-- 上传文件表单的属性设置:methods="POST"enctype="multipart/form-data" --><form action="" method="POST" enctype="multipart/form-data"><fieldset><legend>单文件上传</legend><!-- 前端设置上传文件的大小:字节 --><!-- <input type="hidden" name="MAX_FILE_SIZE" value=" 380"> --><input type="file" name="my_pic" id=""><button>上传</button></fieldset></form></body></html>
<?php// $_FILES: 文件上传变量,超全局的变量数组, 保存着所有与文件上传的相关信息printf('<pre>%s</pre>', print_r($_FILES, true));// 1. 获取上传错误的代码$errorCode = $_FILES['my_pic']['error'] ?? null;// 以html中的那么作为一级数组的key,取中间的'error'key的值。// 2. 判断if ($errorCode === 4) echo '<p>没有文件上传</p>';
具体如图:
<?phperror_reporting(E_ALL);// 判断: 1. 临时文件名, 2 . is_uploaded_file()// 1. 原始文件名$origianlFileName = $_FILES['my_pic']['name'] ?? null;// 2. 临时文件名$tmplFileName = $_FILES['my_pic']['tmp_name'] ?? null;// 首先临时文件是存在的,并且必须是通过POST上传的if ($tmplFileName && is_uploaded_file($tmplFileName)) echo '<p>'. $tmplFileName .' :上传方式正确</p>';else echo '上传类型错误';
// 获取文件类型$fileType = $_FILES['my_pic']['type'] ?? null;// jpg,png,gif// image/png: MIME(卖母)类型// image/jpeg// image/gif....// echo strstr($fileType, '/'); // "/png"// echo '<br>';$type = strstr($fileType, '/', true); // "image"if ($type !== 'image') echo '文件类型错误: 不是有效的图片格式';
// 查看php.ini中的关于上传文件大小的配置项// echo ini_get('upload_max_filesize');// 1. 获取上传错误的代码$errorCode = $_FILES['my_pic']['error'] ?? null;// 2. 判断// $errorCode === 1: 超过了php.ini中的大小设置// $errorCode === 2: 超过了前端上传表单中的大小的设置switch ($errorCode) {case 1:echo '超过了php.ini中的大小设置';break;case 2:echo '超过了前端上传表单中的大小的设置';break;}
文件上传项目项在
php.ini中设置,常用的配置项有:
| 序号 | 配置项 | 默认值 | 描述 |
|---|---|---|---|
| 1 | file_uploads |
On |
使 PHP 支持文件上传 |
| 2 | upload_tmp_dir |
/tmp |
指示应该临时把上传的文件存储在什么位置 |
| 3 | max_file_uploads |
20 |
单次请求时允许上传的最大文件数量 |
| 4 | max_execution_time |
30 |
设置 PHP 最长执行时间(秒) |
| 5 | max_input_time |
60 |
设置 PHP 通过 POST/GET/PUT 接收数据的时长(秒) |
| 6 | memory_limit |
128M |
系统分配给当前脚本执行可用的最大内存容量 |
| 7 | post_max_size |
8M |
允许的 POST 数据的总大小(以字节为单位) |
| 8 | upload_max_filesize |
32M |
允许的尽可能最大的文件上传(以字节为单位) |
$_FILE$_FILES中$_FILES以二维数组形式保存: $_FILES['form_file_name']['key']'form_file_name': 对应着表单中<input type="file" name="my_pic">中name属性值'key': 共有 5 个键名, 描述如下:| 序号 | 键名 | 描述 |
|---|---|---|
| 1 | name |
文件在客户端的原始文件名(即存在用户电脑上的文件名) |
| 2 | type |
文件的 MIME 类型, 由浏览器提供, PHP 并不检查它 |
| 3 | tmp_name |
文件被上传到服务器上之后,在临时目录中临时文件名 |
| 4 | error |
和该文件上传相关的错误代码 |
| 5 | size |
已上传文件的大小(单位为字节) |
| 序号 | 常量 | 值 | 描述 |
|---|---|---|---|
| 1 | UPLOAD_ERR_OK |
0 |
没有错误发生,文件上传成功 |
| 2 | UPLOAD_ERR_INI_SIZE |
1 |
文件超过php.ini中upload_max_filesize值 |
| 3 | UPLOAD_ERR_FORM_SIZE |
2 |
文件大小超过表单中MAX_FILE_SIZE指定的值 |
| 4 | UPLOAD_ERR_PARTIAL |
3 |
文件只有部分被上传 |
| 5 | UPLOAD_ERR_NO_FILE |
4 |
没有文件被上传 |
| 6 | UPLOAD_ERR_NO_TMP_DIR |
6 |
找不到临时文件夹 |
| 7 | UPLOAD_ERR_CANT_WRITE |
7 |
文件写入失败 |
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号