文件大小错误代码无效

时间:2018-04-24 10:24:27

标签: php php-5.6 php-5.5

我写了下面的代码行

<?php

$uniqId = uniqid('file_');
$root = $_REQUEST['root'];

$target_file = "uploads/".basename($_FILES["file"]["name"]);

$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

if ( 0 < $_FILES['file']['error'] )
{
    echo 'Error';
}
else if ($_FILES["file"]["size"] > 2097152) 
{
  echo "SizeError";
}
else if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "docx" && $imageFileType != "pdf") 
{
  echo "ExtensionError";
}
else 
{   
   if( move_uploaded_file($_FILES['file']['tmp_name'], $root.$uniqId.".".$imageFileType))
   {
       echo $uniqId.".".$imageFileType;
   }
}

&GT;

如果我上传5 MB文件,代码将跳转到简单&#34;错误&#34;条件。我希望它应该显示SizeError。请帮忙!!!

4 个答案:

答案 0 :(得分:1)

这是获取尺寸的另一种方法

if (filesize($target_file) > 2097152) 
{
  echo "SizeError";
}

但首先我认为UPLOAD_ERR_INI_SIZE出现了错误$_FILES['file']['error']。 UPLOAD_ERR_INI_SIZE = 1您可以在php.ini中增加它。在你的php.ini中添加或修改它,例如你的增加max_file_size = 25mb:

upload_max_filesize = 25M

修改php.ini后,你的代码也应该起作用:

if ( 0 < $_FILES['file']['error'] )
{
    echo 'Error';
}
else if ($_FILES["file"]["size"] > 2097152) 
{
  echo "SizeError";
}

要检查您的php.ini设置,请致电:

echo phpinfo();

您将看到自己的设置,找到upload_max_filesize它是2mb的默认值。看起来像这样:

enter image description here

答案 1 :(得分:0)

首先检查此条件if ($_FILES["file"]["size"] > 2097152)然后检查其他条件。

您可能会在UPLOAD_ERR_INI_SIZE获得$_FILES['file']['error'],其质量为1.您可以在php.ini中增加它。在php.ini中更改此内容:

upload_max_filesize = 25M

答案 2 :(得分:0)

你得到“错误”的原因是因为这一行:

if ( 0 < $_FILES['file']['error'] )

如果您在此处阅读文档:PHP: Upload Error Messages Explained,那么您会注意到$_FILES['file']['error']可以返回多个值。没有错误时返回0。但如果

,则返回1
  

上传的文件超过了upload_max_filesize指令   php.ini中。

如果出现以下情况,则返回2

  

上传的文件超过了MAX_FILE_SIZE指令   在HTML表单中指定。

在这两种情况下,0都小于1或2.因此,您的脚本会返回“Error”。因为条件评估为真。

您需要更改条件,或首先检查文件大小。

答案 3 :(得分:0)

我遇到了同样的问题,并找到了解决方案。 Codeigniter允许您上传小于2mb的图像。但是,如果您要上传小于5mb的图像,则应在.htaccess文件中添加此行。

php_value upload_max_filesize 20M  

在您的.htaccess文件中添加此行之后,您的代码即可正常工作。