首页博客网络编程
PHP文件上传变得简单:示例,注释,解释
摘要 您可以将文本和二进制文件上传到脚本。 如果您希望限制上传文件,可以设置某些边界。 上传到 PHP 代码的文件包含在名为 PHP 的关联数组中。$_files

我们已经学会了打开和读取各种外部文件,但有时您必须直接将文件上传到服务器。PHP为此提供了有用的内置函数。

在 PHP 文件上载过程中,对代码中允许的文件类型设置限制,并确定文件何时太大。

您的代码包含的所有内容都可能称为 $_FILES。此超全局变量是一个数组,其中包含您上传的文件的所有数据。

内容

PHP文件上传:主要提示

  • PHP文件上传允许用户上传文本和二进制文件。

  • 使用 PHP 时,上传文件过程需要权限。

  • 要以特定方式上传文件,您可以设置限制。

  • 上传到脚本的所有文件的关联数组称为 PHP 。$_files

正在配置 php.ini

如果我们希望制作PHP上传文件,我们必须获得许可。如果我们不这样做,我们应该设置 PHP 来允许它。为了实现这一点,我们编辑名为 php.ini 的文件,并将 的值更改为 ,如示例所示:file_uploadsOn

复制

file_uploads = On

创建 HTML 表单

在我们准备好启动 PHP 文件上传的权限后,我们可以开始为上传过程创建一个 HTML 表单:

复制

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post"enctype="multipart/form-data">
    Select the image you want to upload:
    <input type="file" name="file_to_upload"id="file_to_upload">
    <input type="submit" value="image upload"name="submit">
</form>

</body>
</html>

要有效地使用这些表单上传 PHP 文件,请记住以下几点:

  • 通过 HTML 表单上传文件时,我们必须使用分配给表单元素作为属性的方法。post

  • 我们还必须在其属性之间进行分配。这允许浏览器识别编码类型,以便使PHP正确上传文件。enctype="multipart/form-data"

注意:<input> 元素的属性 type=“file” 将输入字段显示为“浏览”按钮旁边的文件选择控件。

上传脚本

文件上传过程的代码保存在上传.php文件中:

复制

<?php$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file_to_upload"]["name"]);
$upload_ok = 1;
$image_file_type = pathinfo($target_file,PATHINFO_EXTENSION);// checking if image file is accessibleif(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["file_to_upload"]["tmp_name"]);
    if($check !== false) {
        echo "The file you picked is an image - " . $check["mime"] . ".";
        $upload_ok = 1;
    } else {
        echo "The file you picked is not image.";
        $upload_ok = 0;
    }
}?>

让我们分解示例,并确保我们理解每个步骤:

  • $target_dir = "uploads/"告诉服务器将上传的文件放在哪里。 PHP 是保存上传到代码 using 方法的文件的数组。$_filesPOST

  • $target_file声明要上载的文件的路径。

  • $upload_ok=1不会立即使用。它确定上载是否成功。

  • $image_file_type保留文件扩展名。

  • 最后,我们必须检查文件是否有效。

注意:必须在放置 upload.php 文件的路径中创建一个名为 uploads 的新目录。上传的文件将放置在那里。

检查文件是否已存在

在此步骤中,我们将向表单添加限制。首先,检查我们正在上传的文件是否尚未在我们的上传目录中。如果是,则设置为 :$upload_ok0

复制

// checking whether the file is already presentif (file_exists($target_file)) {
    echo "File already present.";
    $upload_ok = 0;
}

设置限制

文件大小

我们声明了一个在我们的表单中调用的字段。现在,我们应该检查文件大小。如果文件大小超过 500 kylobytes(这是我们设置的值),则会触发错误。 然后将设置为 0:file_to_upload$upload_ok

复制

// Checking file sizeif ($_FILES["file_to_upload"]["size"] > 500000) {
    echo "File too big.";
    $upload_ok = 0;
}

文件类型

让我们看下面的例子。您会注意到它将PHP文件上传限制为仅某些类型的文件。允许的扩展名必须具有 JPG、JPEG、PNG 或 GIF 扩展名。

如果文件与指定的类型不匹配,则会捕获错误并将其设置为 0:$upload_ok

复制

// Limiting what file formats are allowedif($image_file_type != "gif" && $image_file_type != "jpg" && $image_file_type != "jpeg" && $image_file_type != "png") {
    echo "Only JPG, JPEG, PNG & GIF files are allowed.";
    $upload_ok = 0;
}

成功上载过程的脚本

这是制作PHP上传文件的最终结果的样子:

复制

<?php$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file_to_upload"]["name"]);
$uploadOk = 1;
$image_file_type = pathinfo($target_file,PATHINFO_EXTENSION);// Check if image file is a actual image or fake imageif(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["file_to_upload"]["tmp_name"]);
    if($check !== false) {
        echo "The file you picked is an image - " . $check["mime"] . ".";
        $upload_ok = 1;
    } else {
        echo "The file you picked is not an image.";
        $upload_ok = 0;
    }
}// Check if file already existsif (file_exists($target_file)) {
    echo "File already present.";
    $upload_ok = 0;
}// Check file sizeif ($_FILES["file_to_upload"]["size"] > 500000) {
    echo "File too big.";
    $upload_ok = 0;
}// Limit allowed file formatsif($image_file_type != "jpg" && $image_file_type != "png" && $image_file_type != "jpeg" && $image_file_type != "gif" ) {
    echo "Only JPG, JPEG, PNG & GIF files are allowed.";
    $upload_ok = 0;
}// Check if $upload_ok is set to 0 by an errorif ($upload_ok == 0) {
    echo "Your file was not uploaded.";// If all the checks are passed, file is uploaded} else {
    if (move_uploaded_file($_FILES["file_to_upload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["file_to_upload"]["name"]). " was uploaded.";
    } else {
        echo "A error has occured uploading.";
    }
}?>

PHP 文件上传:摘要

  • 您可以将文本和二进制文件上传到脚本。

  • 如果您希望限制上传文件,可以设置某些边界。

  • 上传到 PHP 代码的文件包含在名为 PHP 的关联数组中。$_files


声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!

本文链接:https://www.gaoxuejun173.top/blog/163

广告位

本文配乐
来说两句吧

该文章已禁止评论

最新评论

广告位