2016-09-18 61 views
0

我正在使用PHP上传多个文件到数据库。所以,当我检查的文件扩展其总是向我展现我给出的错误消息,即使文件扩展名是正确的:如何使用php验证多个上传的文件?

文件类型是不允许的,我们只接受为.jpg,.png和.gif扩展 文件

这里是验证:

$total = count($_FILES['client_doc']['name']);     
for($i=0; $i<$total; $i++) { 
    $file_name = htmlspecialchars($_FILES['client_doc']['name'][$i]); 
    $file_tmp = htmlspecialchars($_FILES['client_doc']['tmp_name'][$i]); 
    $file_size = htmlspecialchars($_FILES['client_doc']['size'][$i]); 
    $file_ext = explode('.', $file_name); 
    $file_ext = strtolower(end($file_ext)); 
    $allowed_type = array('jpg', 'jpeg', 'gif', 'png'); 
} 

if(!empty($file_name)) { 
    if(!in_array($file_ext, $allowed_type)) { 
     $msg[] = 'File type is not allowed, We accept only .jpg, .png and .gif extension file'; 
     $msg['error'] = true; 
    }elseif($file_size > 2097152) { // only 2 mb size is allowed 
     $msg[] = 'Uploaded file name must be less than 2MB'; 
     $msg['error'] = true;        
    } 
} 

回答

0

我已经给$file_name变量test.png值,并将其WOR测试你的代码很好。你确定你的文件格式正确吗?在for循环的末尾尝试echo $file_name的结尾并检查是否有任何输出。

另一个提示:

  1. 你想验证所有的文件吗?就我而言,您当前的代码只验证最后一个文件 - 您遍历所有文件,但覆盖存储文件数据的变量。为了验证所有元素,您必须将条件放入for循环中。
  2. 因为您的$allowed_type是一个常数,您不必在循环内覆盖它。