在php中上传文件时创建文件类型条件

use*_*811 0 php

我正在使用这个条件,但它没有工作,因为它总是假的,即没有文件类型符合条件,所以我fighre必须有语法错误,但我无法搞清楚.

if (!($_FILES["uploaded"]["type"] == "video/mp4")
&& (!$_FILES["uploaded"]["type"] == "video/flv")
&& (!$_FILES["uploaded"]["type"] == "video/webm" )
&& (!$_FILES["uploaded"]["type"] == "video/ogg" ))

{
   $message="not an accepted file format";
}    
Run Code Online (Sandbox Code Playgroud)

jer*_*oen 5

if ( !($_FILES["uploaded"]["type"] == "video/mp4"
       || $_FILES["uploaded"]["type"] == "video/flv"
       || $_FILES["uploaded"]["type"] == "video/webm"
       || $_FILES["uploaded"]["type"] == "video/ogg") )
{
   $message="not an accepted file format";
} 
Run Code Online (Sandbox Code Playgroud)

我认为有效意味着任何这些类型,所以你检查这些(使用or)中的任何一个而不是否定它.


hak*_*kre 5

一个常见的情况in_array:

$type          = $_FILES["uploaded"]["type"];
$allowedTypes  = ["video/mp4", "video/flv", "video/webm", "video/ogg"];
$isRefusedType = !in_array($type, $allowedTypes);
if ($isRefusedType) {
    $message = "not an accepted file format";
}
Run Code Online (Sandbox Code Playgroud)

或者isset对于翻转的数组:

$type          = $_FILES["uploaded"]["type"];
$allowedTypes  = array_flip(["video/mp4", "video/flv", "video/webm", "video/ogg"]);
$isRefusedType = !isset($allowedTypes[$type]);
if ($isRefusedType) {
    $message = "not an accepted file format";
}
Run Code Online (Sandbox Code Playgroud)