PHP笔记-文件上传例子

x33g5p2x  于2021-12-30 转载在 PHP  
字(2.6k)|赞(0)|评价(0)|浏览(503)

程序运行截图如下:

选择文件然后点击提交后:

目录下也有了:

源码如下:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
    <form action="uploadFile.php" method="post" enctype="multipart/form-data">
        <label for="file">文件名: </label>
        <input type="file" name="file" id="file"><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

uploadFile.php

<?php
    $allowed = array("gif", "png", "jpg");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    echo $_FILES["file"]["size"];

    if ((($_FILES["file"]["type"] == "image/gif")
            || ($_FILES["file"]["type"] == "image/jpeg")
            || ($_FILES["file"]["type"] == "image/jpg")
            || ($_FILES["file"]["type"] == "image/pjpeg")
            || ($_FILES["file"]["type"] == "image/x-png")
            || ($_FILES["file"]["type"] == "image/png"))
        && ($_FILES["file"]["size"] < 2048000)
        && in_array($extension, $allowed)){

        if($_FILES["file"]["error"] > 0){

            echo "错误 : " . $_FILES["file"]["error"] . "<br>";
            header("Refresh:3;url=index.html");
        }

        echo "上传的文件名: " . $_FILES["file"]["name"] . "<br>";
        echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
        echo "文件大小: " . $_FILES["file"]["size"] . "<br>";
        echo "文件临时存放位置:" . $_FILES["file"]["tmp_name"] . "<br>";

        if(file_exists("upload" . $_FILES["file"]["name"])){

            echo $_FILES["file"]["name"] . "文件已经存在。";
        }
        else{

            move_uploaded_file($_FILES["file"]["tmp_name"], __DIR__ . "\\upload\\" . $_FILES["file"]["name"]);
            echo "文件存储在: " . __FILE__ . "\\upload\\" . $_FILES["file"]["name"];
        }
    }
    else{

        header("Refresh:3;url=index.html");
    }
?>

需要注意的地方:

①$_FILES

从中可以知道,他是一个全局的变量,与快要被废弃的$HTTP_POST_FILES功能一样。在使用post方法上传文件时常用。

②move_uploaded_file

从中可以知道,这个函数的功能是把上传的文件拷贝到本地,第一个参数是上传的文件,第二个参数是要移动到拿。返回值是个bool类型,如果第一个参数是无效的文件名,函数将返回false,并且不会生效,还会打印warning。

③__DIR__

从中可知,这个宏是获取当前文件的目录这个宏等同于dirname(FILE)

相关文章