PHP $_FILES函数详解

yizhihongxing

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将HTML表格每行每列转为数组实现采集表格数据的方法

    要将HTML表格的每行每列转为数组,实现采集表格数据,可以采用以下步骤: 1.首先,根据table标签的id或class属性找到目标表格。 2.通过PHP的DOMDocument类,将HTML代码解析为DOM结构,然后用DOMXPath类查找表格中的每一行。 3.对每一行进行循环遍历,将每个单元格的内容存入关联数组中,并将该数组存入外层的索引数组中。 4.最…

    PHP 2023年5月26日
    00
  • PHP简单装饰器模式实现与用法示例

    下面我将为你详细讲解“PHP简单装饰器模式实现与用法示例”的完整攻略。 PHP简单装饰器模式实现与用法示例 一、什么是装饰器模式 装饰器模式(Decorator Pattern)是一种设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它允许通过添加函数封装来动态改变对象的行为。 二、装饰器模式的实现 在 PH…

    PHP 2023年5月27日
    00
  • 解析php中的escape函数

    解析 PHP 中的 escape 函数 在 PHP 中,escape 函数是用来将字符串中的特殊字符进行转义的。这些特殊字符包括单引号、双引号、反斜杠和 ASCII 控制字符等。 escape 函数的语法 escape 函数的语法如下: string mysqli_escape_string ( mysqli $link , string $escapest…

    PHP 2023年5月27日
    00
  • php实现webservice实例

    1. 准备工作 在 php 中实现 webservice,需要先确认以下几点: 确认 php 版本支持 SoapClient 模块。可以通过 phpinfo() 函数检查。 编写 wsdl 文件,定义 webservice 的函数、参数和返回值等信息。 2. 创建 wsdl 文件 创建 webservice 所需的 wsdl 文件需要遵循 WSDL(Web …

    PHP 2023年5月27日
    00
  • Java调用新浪api通过Ip查询地区

    下面我将给出Java调用新浪api通过Ip查询地区的完整攻略,并提供两条示例说明。 1. 确认使用的API 要调用新浪API查询地区,需要使用 http://int.dpool.sina.com.cn/iplookup/iplookup.php 这个API。 2. 获取API返回的数据 调用API后,会返回一段包含IP地址信息的JSON数据,在Java中需要…

    PHP 2023年5月27日
    00
  • HTML中嵌入PHP的简单方法

    在HTML中嵌入PHP代码是非常常见的一种方式,可以让我们动态的生成页面内容。下面是一个简单的步骤: 1.在HTML文件中使用PHP 我们可以在 HTML 文件中使用 PHP 代码,让 PHP 代码动态地生成 HTML 页面的内容。 要在 HTML 文件中使用 PHP 代码,必须将文件扩展名从 .html 更改为 .php。例如,将 index.html 更…

    PHP 2023年5月23日
    00
  • 详解C语言中的字符串拼接(堆与栈)

    详解C语言中的字符串拼接(堆与栈) 在 C 语言中,字符串拼接是一个非常基础且常用的操作,本文将详细讲解 C 语言中的字符串拼接及其涉及到的堆与栈。 什么是字符串拼接 字符串拼接是指将两个或多个字符串连接起来,形成一个新的字符串。在 C 语言中,字符串是以字符数组的形式存储的,因此字符串拼接实际上就是将一个字符数组的内容复制到另一个字符数组中,并加上结尾符号…

    PHP 2023年5月26日
    00
  • PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】

    下面我将为您详细讲解“PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】”的完整攻略。 方法一:使用$_SERVER全局变量 我们可以使用PHP中的$_SERVER全局变量来获取访问者的User-Agent头部信息,进而判断是否为移动端设备。User-Agent头部信息包含了访问者的浏览器和操作系统信息,在移动设备的User-Agent中会包…

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