PHP $_FILES函数详解

PHP $_FILES函数详解

PHP中的$_FILES函数用于从上传的文件中获取信息。它可以让我们访问上传文件的名称、类型、大小、临时文件名和编码等信息。

上传文件表单

要用$_FILES函数处理上传的文件,我们需要先在HTML表单中添加一个"file"类型的表单元素,使用户可以将文件选择其中并上传到我们的服务器:

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form>

这些代码中,enctype属性指定了表单类型为multipart/form-data,这是因为文件必须以这种方式上传。 action属性指定了表单提交到的处理脚本的URL。

$_FILES数组

一旦我们上传了文件,所有的上传文件信息都存在于"$_FILES"数组中。该数组的键名由表单中元素的"name"属性决定。

1.获取文件信息

以下代码展示了如何从$_FILES数组中获取上传文件的信息:

print_r($_FILES["fileToUpload"]);

输出结果类似于这个样子:

Array
(
    [name] => myFile.txt
    [type] => text/plain
    [tmp_name] => /tmp/php/php1h4j1o
    [error] => UPLOAD_ERR_OK
    [size] => 123
)

其中,"name"表示文件的原始名称,"type"表示文件的类型,"tmp_name"表示文件的临时名称,"error"表示文件上传过程中是否出错,"size"表示文件的大小(以字节为单位)。

2.上传文件到服务器

以下代码展示了如何将上传的文件从临时目录移动到指定的目录:

$targetDirectory = "uploads/";
$targetFile = $targetDirectory . basename($_FILES["fileToUpload"]["name"]);

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
}

在这个例子中,我们定义了一个$targetDirectory变量表示目标目录的路径,$targetFile变量表示上传文件在目标目录中的命名。

move_uploaded_file()

函数用于将上传的文件从临时目录移动到目标目录。

注意事项

  1. 在接收上传文件的PHP页面的最顶端,一定要输出header头,否则$_FILES将返回空数组。

  2. 默认情况下,PHP设置文件上传最大大小为2MB。如果上传的文件大小超过了这个限制,将会引发系统错误。可以通过修改php.ini文件中的"upload_max_filesize" 和 "post_max_size" 两个参数来修改文件大小上传限制。

  3. 上传的文件大小使用的是字节(byte)的单位,需要将其转换为MB或GB时,可以使用以下代码:

$fileSizeInMB = ($_FILES["fileToUpload"]["size"] / (1024*1024));
$fileSizeInGB = ($_FILES["fileToUpload"]["size"] / (1024*1024*1024));

示例

示例1: 上传单个文件并获取文件的基本信息

<?php
    echo "<h1>Upload a file and show its basic information:</h1>";
    if (isset($_POST['submit'])) {
        print_r($_FILES["fileToUpload"]);
    }
?>

<form action="" method="post" enctype="multipart/form-data">
    <label for="fileToUpload">Select a file to upload:</label>
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form>

在这个示例中,我们只是简单的展示了上传文件的基本信息。当用户点击了"Upload File"按钮并上传成功时,它将会打印上传的文件的各个参数。

示例2: 上传文件并将文件保存到服务器

<?php
    echo "<h1>Upload and save file to server:</h1>";
    if(isset($_FILES['fileToUpload']))
    {
        $errors= array();
        $file_name = $_FILES['fileToUpload']['name'];
        $file_size =$_FILES['fileToUpload']['size'];
        $file_tmp =$_FILES['fileToUpload']['tmp_name'];
        $file_type=$_FILES['fileToUpload']['type'];
        $file_ext=strtolower(end(explode('.',$_FILES['fileToUpload']['name'])));

        $extensions= array("jpeg","jpg","png");

        if(in_array($file_ext,$extensions)=== false){
            $errors[]="extension not allowed, please choose a JPEG,PNG or JPG file.";
        }

        if($file_size > 2097152){
            $errors[]='File size must be less or equal to 2 MB';
        }

        if(empty($errors)==true){
            $target_dir = "uploads/";
            $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
            move_uploaded_file($file_tmp,$target_file);
            echo "The file ".$file_name." has been uploaded.";
        }else{
            echo implode(',', $errors);
        }
    }
?>

<form action="" method="post" enctype="multipart/form-data">
    <label for="fileToUpload">Select a file to upload:</label>
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form>                

在这个示例中,当用户点击"Upload File"按钮并上传成功时,将会把上传的文件保存到服务器的指定目录中。如果上传失败,它将会打印出错误信息并结束。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP $_FILES函数详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 微信小程序 form组件详解

    微信小程序 form组件详解 简介 form组件是微信小程序中的一个表单组件,主要用于提交表单数据。在开发微信小程序中,使用form组件可以大大简化表单的开发过程,减少代码量。 使用方法 form组件的基本使用方法如下: <form bindsubmit="submitForm"> <input type="t…

    PHP 2023年5月23日
    00
  • PHP数组访问常用方法解析

    PHP数组访问常用方法解析 一、读取数组元素 PHP数组可以使用下标来访问数组元素。下标是数组中用于标识元素位置的索引,可以是整数或字符串类型。 1.通过下标读取元素 以下是通过下标读取数组元素的语法: $arrayName[index] 其中,$arrayName表示数组名,index是下标。如果index为整数,则表示读取数组中的第index个元素;如果…

    PHP 2023年5月26日
    00
  • 浅析php中array_map和array_walk的使用对比

    以下是“浅析PHP中array_map和array_walk的使用对比”的完整攻略。 概述 array_map 和 array_walk 都是 PHP 对数组进行处理的函数,它们分别有各自的优劣点,下面我们就来对它们进行详细的对比分析。 array_map 函数 语法 array_map (callable $callback, array …$arrs…

    PHP 2023年5月26日
    00
  • 区块链技术:什么是加密货币挖矿?

    区块链技术:什么是加密货币挖矿? 什么是加密货币挖矿? 加密货币挖矿是指用计算机处理复杂的加密算法,获取数字货币的过程。挖矿的计算过程需要消耗计算能力、电力和时间。通过解决密码学难题获取数字货币的过程可以称之为挖矿。比特币、以太坊、莱特币等数字货币都需要进行挖矿。 挖矿的原理 比特币使用的是工作量证明(PoW)共识机制,即通过计算产生的结果来获得比特币奖励。…

    PHP 2023年5月27日
    00
  • PHP常用特殊运算符号和函数总结(php新手入门必看)

    我来为你详细讲解“PHP常用特殊运算符号和函数总结(php新手入门必看)”的完整攻略。 一、概述 本文主要介绍 PHP 常用的特殊运算符和函数,这些内容对于 PHP 初学者来说非常重要,掌握这些知识点能够帮助你更加熟练地使用 PHP 编程。 本文所涉及的特殊运算符包括:三元运算符、递增递减运算符、比较运算符、逻辑运算符等;所涉及的函数包括:字符串函数、数组函…

    PHP 2023年5月26日
    00
  • php中配置文件保存修改操作 如config.php文件的读取修改等操作

    php读取config.php文件内容并输出 首先要明确config.php文件的格式,通常这种文件会以数组的方式保存配置信息。比如以下示例: $config = [ ‘db_host’ => ‘localhost’, ‘db_username’ => ‘root’, ‘db_password’ => ‘123456’, ‘db_name’…

    PHP 2023年5月26日
    00
  • php使用simple_html_dom解析HTML示例

    下面就给您讲解一下“php使用simple_html_dom解析HTML示例”的完整攻略。 一、简介 simple_html_dom是一个功能强大的PHP第三方库,主要用于HTML文本的解析、遍历以及查找。使用simple_html_dom库,我们可以方便地获取HTML文本中的各种元素和属性,进而对其进行分析处理。 二、安装 simple_html_dom库…

    PHP 2023年5月26日
    00
  • 基于PHP实现用户注册登录功能

    下面是基于PHP实现用户注册登录功能的完整攻略: 1. 确定需求 在开始实现用户注册登录功能之前,首先需要明确应用程序的需求。通常包括以下几个方面: 用户能够在应用程序中注册新账户 已注册的用户能够使用账户登录应用程序 在用户登录后,能够显示相关的个人信息或操作选项 在用户注册或登录时,应用程序需要验证用户提供的凭据(比如账户名和密码等) 2. 数据库设计 …

    PHP 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部