我做错了代码,它总是显示'文件类型.doc,.docx,.odt和最大文件大小2mb支持',即使文件类型为.doc格式且大小为0kb。
if(($_FILES["file"]["type"] != 'application/octet-stream') ||
($_FILES["file"]["type"] != 'application/vnd.oasis.opendocument.text')||
($_FILES["file"]["type"] != 'application/msword')||
($_FILES["file"]["size"] > 200000))
{
//echo $_FILES["file"]["size"];
//echo $_FILES["file"]["type"];
$this->assign_values('msg',"File types .doc,.docx,.odt and max file size 2mb supported");
//echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
答案 0 :(得分:4)
您需要在文件类型之间将||
更改为&&
。
或者甚至更好地根据允许的类型列表检查类型:
$allowedTypes = array('application/octet-stream', 'application/vnd.oasis.opendocument.text', 'application/msword');
if(!in_array($_FILES["file"]["type"], $allowedTypes) || $_FILES["file"]["size"] > 200000)
{
//echo $_FILES["file"]["size"];
//echo $_FILES["file"]["type"];
$this->assign_values('msg',"File types .doc,.docx,.odt and max file size 2mb supported");
//echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
答案 1 :(得分:0)
您正在使用OR,这意味着您提供的参数之一必须为真。
由于您在不同的值上检查类型3次,因此它必然始终返回true,从而触发if。
答案 2 :(得分:0)
您正在使用OR(||),如果任何一个语句为真,则代码将执行