1. $_FILES是什么?
$_FILES常用于上传文件时处理上传的文件,他是PHP预定义全局变量,用来处理表单以multipart/form-data格式传输的文件数据。
1.1 上传文件的表单
在处理上传文件时,首先需要在表单中添加enctype属性,来声明表单采用的编码类型。如下:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile">
<input type="submit" value="上传">
</form>
其中,enctype="multipart/form-data"用于指定表单数据以二进制流的格式进行传输,因为文件不是文本类型的,需要采用二进制方式上传。而input元素的文件上传控件是用来选择上传文件的。
1.2 $_FILES的属性
在处理上传文件时,$_FILES可以通过以下属性来获取上传文件的相关信息:
$_FILES['name']:上传文件的原始名称
$_FILES['tmp_name']:上传的文件的临时文件名,用于在服务器端保存文件
$_FILES['type']:上传文件的MIME类型(如image/jpeg)
$_FILES['size']:上传文件的大小(字节)
$_FILES['error']:上传文件的错误代码。0表示文件上传成功,其他值则上传失败
2. PHP 处理上传文件的示例
以下是一个非常简单的接收并处理上传文件的示例,代码中使用了move_uploaded_file函数来完成将文件从临时目录中移动到指定的目录和重命名文件。具体来说,他先判断了上传文件有没有错误,然后再将上传的文件存储到服务器上的指定位置。代码如下:
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['myfile']['name']);
if ($_FILES['myfile']['error'] == UPLOAD_ERR_OK) {
if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)) {
echo '文件上传失败!';
}
} else {
echo '上传文件发生错误:';
echo $_FILES['myfile']['error'];
}
?>
3. 总结
通过使用PHP的$_FILES全局变量,我们可以轻松地接受上传的文件并处理他们。上传文件时需要设置表单的enctype属性为multipart/form-data,然后用input type="file"元素获取上传文件,最后通过$_FILES数组处理上传文件。