- PHP 菜鸟教程
- PHP - 教程
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 功能
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - echo 语句和 print 语句
- PHP - var_dump() 函数
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP – 数据类型
- PHP - 类型转换
- PHP - 类型戏法
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件和I/O
- PHP – 数学函数
- PHP - Heredoc & Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符类型
- PHP - 算术运算符示例
- PHP - 比较运算符示例
- PHP - 逻辑运算符示例
- PHP - 赋值运算符示例
- PHP – 字符串运算符
- PHP – 数组运算符
- PHP – 条件运算符示例
- PHP - Spread 运算符
- PHP - Null 合并运算符
- PHP - Spaceship 运算符
- PHP 控制语句
- PHP – 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP – 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - do...While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 数组
- PHP - 数组
- PHP - 索引数组
- PHP - 关联数组
- PHP - 多维数组
- PHP - 数组函数
- PHP - 常量数组
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值调用
- PHP - 按引用调用
- PHP - 默认参数
- PHP - 命名参数
- PHP - 变量参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量范围
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头( Arrow )函数
- PHP - 变量处理函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS 变量
- PHP - $_SERVER 变量
- PHP - $_REQUEST 变量
- PHP - $_POST 变量
- PHP - $_GET 变量
- PHP - $_FILES 变量
- PHP - $_ENV 变量
- PHP - $_COOKIE 变量
- PHP - $_SESSION 变量
- PHP 文件处理
- PHP - 文件处理
PHP - $_FILES 变量
$_FILES 是 PHP 的“超全局变量”或自动全局变量之一。它在整个脚本的所有范围内都可用。变量 $_FILES 是一个关联数组,其中包含通过 HTTP POST 方法上传的项目。
当 HTML 表单包含具有文件类型的 input 元素,其 enctype 属性设置为 multipart/form-data,并且 method 属性设置为 HTTP POST 方法时,将上传文件。
$HTTP_POST_FILES 也包含相同的信息,但它不是超全局变量,现在已被弃用。
以下 HTML 脚本包含一个表单,其 input 元素的文件类型为 -
<input type="file" name="file">
此 “input type” 呈现一个标题为 file 的按钮。单击后,会弹出一个文件对话框。您可以选择要上传的文件。
服务器上的 PHP 脚本可以访问 $_FILES 变量中的文件数据。
$_FILES 数组包含以下属性 -
- $_FILES['file']['name']: 用户选择上传的文件的原始名称。
- $_FILES['file']['type']: 文件的 MIME 类型。例如,“image/gif”。但是,此 MIME 类型在 PHP 端未检查。
- $_FILES['file']['size']: 上传文件的大小(以字节为单位)。
- $_FILES['file']['tmp_name']: 服务器上存储上传文件的文件的临时文件名。
- $_FILES['file']['full_path']: 浏览器提交的完整路径。从 PHP 8.1.0 开始可用。
- $_FILES['file']['error']: 与此文件上传关联的错误代码。
错误代码列举如下 -
错误代码 | 描述 |
---|---|
UPLOAD_ERR_OK (Value=0) |
没有错误,文件上传成功。 |
UPLOAD_ERR_INI_SIZE (Value=1) |
上传文件超过了 php.ini 中的 upload_max_filesize 指令。 |
UPLOAD_ERR_FORM_SIZE (Value=2) |
上传的文件超过MAX_FILE_SIZE。 |
UPLOAD_ERR_PARTIAL (Value=3) |
上传的文件仅上传了部分内容。 |
UPLOAD_ERR_NO_FILE (Value=4) |
未上传任何文件。 |
UPLOAD_ERR_NO_TMP_DIR (Value=6) |
缺少临时文件夹。 |
UPLOAD_ERR_CANT_WRITE (Value=7) |
无法将文件写入磁盘。 |
UPLOAD_ERR_EXTENSION (Value=8) |
PHP 扩展已停止文件上传。 |
例
以下“test.html”包含一个 HTML 表单,其 enctype 设置为 multiform/form-data。它还具有一个 input file 元素,该元素在表单上显示一个按钮,供用户选择要上传的文件。将此文件保存在 Apache 服务器的文档根文件夹中。
<html>
<body>
<form action="hello.php" method="POST" enctype="multipart/form-data">
<p><input type="file" name="file"></p>
<p><input type ="submit" value="submit"></p>
</form>
</body>
</html>
上面 HTML 在浏览器窗口呈现一个名为“选择文件”的按钮。要打开文件对话框,请单击“选择文件”按钮。当所选文件的名称出现时,单击 提交按钮。
例
文档根文件夹中的服务器端 PHP 脚本 (upload.php) 读取变量 $_FILES 数组,如下所示 -
<?php
echo "Filename: " . $_FILES['file']['name']."<br>";
echo "Type : " . $_FILES['file']['type'] ."<br>";
echo "Size : " . $_FILES['file']['size'] ."<br>";
echo "Temp name: " . $_FILES['file']['tmp_name'] ."<br>";
echo "Error : " . $_FILES['file']['error'] . "<br>";
?>
它将产生以下输出 -
Type : text/plain
Size : 556762
Temp name: C:\xampp\tmp\phpD833.tmp
Error : 0
例子
在 PHP 中,您可以使用 HTML 数组功能上传多个文件 -
<html>
<body>
<form action="hello.php" method="POST" enctype="multipart/form-data">
<input type="file" name="files[]"/>
<input type="file" name="files[]"/>
<input type ="submit" value="submit"/>
</form>
</body>
</html>
现在,将 PHP 脚本 (hello.php) 更改为 −
<?php
foreach ($_FILES["files"]["name"] as $key => $val) {
echo "File uploaded: $val <br>";
}
?>
浏览器将显示多个 “选择文件” 按钮。通过单击“提交”按钮上传所选文件后,浏览器将显示文件名以响应 URL http://localhost/hello.html 如下所示 -