我写了下面的代码行
<?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。请帮忙!!!
答案 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的默认值。看起来像这样:
答案 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。但如果
上传的文件超过了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文件中添加此行之后,您的代码即可正常工作。