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日

相关文章

  • 强制PHP命令行脚本单进程运行的方法

    强制PHP命令行脚本单进程运行,可以利用Linux系统的锁机制来实现。通过在脚本运行时,使用flock()函数加锁,来保证只有一个进程在执行该脚本。 下面是实现该方法的具体步骤: 在脚本中添加flock函数加锁,以保证只有一个进程在运行该脚本。例如: <?php $fp = fopen("/var/run/my_script.lock&quo…

    PHP 2023年5月23日
    00
  • PHP中array_slice函数用法实例详解

    PHP中array_slice函数用法实例详解 概述 array_slice() 是 PHP 中处理数组的一个内置函数,用于获取数组的一个子集。 语法 array_slice(array $array, int $offset [, int $length = NULL [, bool $preserve_keys = FALSE ]]) : array 参…

    PHP 2023年5月26日
    00
  • PHP常用函数小技巧

    PHP常用函数小技巧 概述 PHP是一种非常实用的开发语言,而其函数库的强大和庞大也成为了开发过程中必不可少的一部分。在本文中,我们将会讲解一些常用的PHP函数技巧,帮助大家在开发过程中更加得心应手。 字符串函数 substr substr函数可以用于截取字符串的某一部分,例如: $original_string = "Hello World!&q…

    PHP 2023年5月26日
    00
  • php通过字符串调用函数示例

    首先,我们需要了解PHP中的可变函数。可变函数是指将函数名存储在一个变量中,通过该变量来调用对应的函数。在PHP中,可变函数的调用方式是在函数名前添加美元符号($),后面跟着存储函数名的变量名,例如: $func_name = ‘strpos’; $pos = $func_name(‘hello world’, ‘o’); echo $pos; //输出 4…

    PHP 2023年5月26日
    00
  • PHP实现的多彩标签效果代码分享

    下面是“PHP实现的多彩标签效果代码分享”的完整攻略: 1. 分析需求 在开始编写代码之前,我们需要先了解需求,这里的需求是实现一个多彩标签效果。该效果可以显示不同的标签类别,并且不同类别的标签具有不同的颜色。 2. 编写HTML代码 首先,我们需要先编写HTML代码,用于展示标签效果。HTML代码可参考如下: <div class="tag…

    PHP 2023年5月23日
    00
  • php限制文件下载速度的代码

    接下来我将为您详细讲解如何对PHP文件进行限速下载。 第一步 – 检查是否支持重定向和一些头文件 在PHP文件开始执行之前,要检查服务器是否支持HTTP重定向和一些头文件: <?php if (!headers_sent()) { header(‘X-Accel-Buffering: no’); } ini_set(‘max_execution_tim…

    PHP 2023年5月26日
    00
  • php标签云的实现代码

    下面为您详细讲解 PHP 标签云的实现。 什么是 PHP 标签云 标签云是指将标签以云状的形式展现出来,其中文字大小和颜色不同,更加突出某些关键字的特点,从而帮助用户更加快速地找到感兴趣的话题或文章。 在 PHP 中,我们可以通过遍历文章标签,统计每个标签的出现次数,并根据 tag 出现次数来决定标签的大小和颜色,从而将标签云实现出来。 实现步骤 步骤一:统…

    PHP 2023年5月27日
    00
  • php使用flock阻塞写入文件和非阻塞写入文件的实例讲解

    PHP使用flock阻塞写入文件和非阻塞写入文件的实例讲解 什么是flock flock 是 PHP 内置的一个函数,用于提供文件锁机制,通过锁文件实现对文件的同步和互斥操作。flock函数可以提供导向锁和共享锁,以支持多进程之间对同一文件进行不同类型的操作。 flock的使用 flock的基本用法为: bool flock ( resource $hand…

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