欢迎访问宙启技术站
智能推送

php中$_files的用法

发布时间:2023-05-16 09:17:12

$_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处理文件上传,可以方便快捷地接收、过滤和存储上传文件,极大地节省了编写上传文件处理脚本的时间。当然,在处理上传文件时,也需要注意安全性,防止上传恶意文件。