PHP限制上传大小验证

时间:2018-03-23 08:07:32

标签: php

我想问一下 PHP限制上传大小验证 我已经制作了限制大小上传的代码,但那仍然会出错

我的限制大小是500 Kb 当我将500Kb以上的文件上传到2Mb时,验证工作正常 但是当我的文件大小超过2Mb时,验证无法正常工作

这是我的第一个代码

$maxsize    = 500000;
if(($_FILES['myfile']['size'] >= $maxsize) || ($_FILES["myfile"]["size"] == 0)) {
                    $error = true;
                    array_push($error_cause, "<li>File size is over limit");
                }

这是我的第二个代码

if ($myfile->getSize() > 500000) {
                    $error = true;
                    array_push($error_cause, "<li>File size is over limit");
                }

为了更清楚,我对这个问题做了一个GIF Here

3 个答案:

答案 0 :(得分:1)

算术101:5MB ===&gt; 5 * 1024 * 1024字节

为了保持代码清晰,我经常将单位定义为常量:

<?php
define('KB', 1024);
define('MB', 1048576);
define('GB', 1073741824);
define('TB', 1099511627776);
// Then you can simply do your condition like
ini_set('upload_max_filesize', 5*MB);
if (isset ( $_FILES['uploaded_file'] ) ) {
    $file_size = $_FILES['uploaded_file']['size'];
    $file_type = $_FILES['uploaded_file']['type'];
    if (($file_size > 0.5*MB) && ($file_size < 2*MB)){      
        $message = 'File too large. File must be more than 500 KB and less than 2 MB.'; 
        echo $message; 
    }

答案 1 :(得分:0)

简单方法:

$min =  500; //KB
$max = 2000; //KB

if($_FILES['myfile']['size'] < $min * 1024 || $_FILES['myfile']['size'] > $max * 1024){
 echo 'error';
}

答案 2 :(得分:-2)

value of upload_max_filesize in php.ini is 2MB by default。任何大于此的文件都将被PHP拒绝。

您希望更改php.ini文件中的值,并确保同时adjust the post_max_size setting,因为这也适用于上传的文件。

当上传的文件大小超过限制时,$_FILES数组将为空,您根本无法检测到上传(因此,您不会显示任何错误)

您可以see the actual uploaded file size查看值$_SERVER['CONTENT_LENGTH']