php中$_files的用法
$_FILES是PHP中用来处理文件上传的一个超级全局变量,它通常是由form标签中的<input type="file">字段触发的。它是一个数组,用来存储所有上传文件的相关信息,包括文件的名称、文件的类型、大小、临时文件名等。在接收上传文件时,需要使用该数组中的信息进行判断、过滤和存储等操作。
$_FILES数组的结构
在使用$_FILES数组之前,需要了解它的结构。它包含了以下的键:
$_FILES['user_file']['name']:上传文件的原始名称。
$_FILES['user_file']['tmp_name']:上传后存储在服务器上的临时文件名。
$_FILES['user_file']['size']:上传文件的大小,单位是字节。
$_FILES['user_file']['type']:上传文件的MIME类型,例如image/jpeg。
$_FILES['user_file']['error']:上传文件时的错误代码,如果值为0,表示上传成功,否则就是一个错误代码。
其中'user_file'是上传文件表单字段的名称,可以根据实际情况进行更改。
使用$_FILES接收上传文件
接收上传文件的代码:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="user_file" />
<input type="submit" name="submit" value="上传" />
</form>
在form标签中,设置了三个属性:action表示表单提交地址,method表示请求方式,enctype表示表单数据的编码方式。其中的enctype必须设置成multipart/form-data,才能上传文件。
在PHP脚本中,使用$_FILES接收上传文件:
<?php
if(isset($_POST['submit'])){
$file_name = $_FILES['user_file']['name']; //原始名字
$tmp_name = $_FILES['user_file']['tmp_name']; //服务器中的临时文件名
$file_type = $_FILES['user_file']['type']; //文件类型
$file_size = $_FILES['user_file']['size']; //文件大小
$error = $_FILES['user_file']['error']; //错误代码
//对上传文件进行处理
}
?>
需要注意的是,表单中需要设置enctype="multipart/form-data",才能正常上传文件。在接收上传文件时,使用isset()函数进行判断,如果上传文件的表单被提交,则开始处理上传文件。
处理上传文件
对于接收到的上传文件,可以进行一系列的处理,例如保存到指定的文件夹、判断文件类型是否符合要求、检查文件大小是否超限等操作。
1. 保存上传文件
将上传的文件保存到某个文件夹下,可以使用move_uploaded_file()函数。代码如下:
<?php
if(isset($_POST['submit'])){
$file_name = $_FILES['user_file']['name'];
$tmp_name = $_FILES['user_file']['tmp_name'];
$target_path = "uploads/";
if(move_uploaded_file($tmp_name, $target_path.$file_name)){
echo "上传成功";
}else{
echo "上传失败";
}
}
?>
move_uploaded_file()函数的 个参数是临时文件的路径,第二个参数是目标文件的路径,只有函数执行成功,才会返回true。
2. 检查上传文件类型
在处理上传文件时,常常需要根据文件类型进行判断,例如只允许上传JPEG格式的图片。可以使用pathinfo()函数获取文件的扩展名,然后进行判断。代码如下:
<?php
if(isset($_POST['submit'])){
$file_name = $_FILES['user_file']['name'];
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION); //获取文件的扩展名
$allowed_ext = array("jpeg", "jpg", "png", "gif");
if(in_array($file_ext, $allowed_ext)){
//上传文件处理
}else{
echo "只允许上传JPEG、PNG、GIF格式的图片";
}
}
?>
3. 检查上传文件大小
可以通过设置php.ini文件中的upload_max_filesize和post_max_size来限制上传文件的大小,但是在处理上传文件时,也需要进行判断。代码如下:
<?php
if(isset($_POST['submit'])){
$file_name = $_FILES['user_file']['name'];
$file_size = $_FILES['user_file']['size'];
$max_size = 1024 * 1024; //设置上传文件的最大值为1MB
if($file_size <= $max_size){
//上传文件处理
}else{
echo "上传的文件大小不能超过1MB";
}
}
?>
使用$_FILES处理文件上传,可以方便快捷地接收、过滤和存储上传文件,极大地节省了编写上传文件处理脚本的时间。当然,在处理上传文件时,也需要注意安全性,防止上传恶意文件。
