仅允许图像FILE_UPLOAD

时间:2016-01-22 13:53:13

标签: php

基本上下面的代码只允许图片通过我已将.mov.mp4添加到允许列表中,但它仍会输出文件在上传时不是图像;只是想知道我在哪里出错了。

帖子和表格:

<html>
<body>
    <form action="test.php?post=true" method="post" enctype="multipart/form-data">
        Select image to upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Upload" name="submit">
    </form>
</body>
</html>

<? 
$post = $_GET['post'];

if ($post == 'true') {
    $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
    if (isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if ($check !== false) {
            echo "File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        }
        else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }

    // Check if file already exists

    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }

    // Check file size

    if ($_FILES["fileToUpload"]["size"] > 50000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }

    // Allow certain file formats

    if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" && $imageFileType != "mp4" && $imageFileType != "mov") {
        echo "Sorry, only JPG, JPEG, PNG, MP4, MOV & GIF files are allowed.";
        $uploadOk = 0;
    }

    // Check if $uploadOk is set to 0 by an error

    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";

        // if everything is ok, try to upload file

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

1 个答案:

答案 0 :(得分:2)

<强> getimagesize

  

函数将确定任何给定图像文件的大小并返回   尺寸以及文件类型和高度/宽度文本字符串   在普通的HTML IMG标签和对应的HTTP中使用   内容类型。

正如它在文档中完全提及它只适用于图像文件。您尝试上传视频文件.mov and .mp4,这是您收到该错误的原因

获取视频文件维度How to get video duration, dimension and size in PHP?