PHP显示基于用户的消息附加文件或不附加文件(第2部分)

时间:2015-11-26 06:47:38

标签: php html file-upload

续上

再次,形式:

<html>
<head></head>

<body>
<form action="add.php" method="post" enctype="multipart/form-data">
File 1: <input type="file" name="file1" />
File 2: <input type="file" name="file2" />
<input type="submit" name="submit" value="ADD">
</form>
</body>
</html>

用户只能附加jpg,jpeg,gif和png扩展名。这是我的要求:
(1)如果用户在文件1中上传jpg文件---&gt;是图像文件
(2)如果用户在文件1中上传psd文件---&gt;不是图像文件
(3)如果用户在文件2中上传jpg文件---&gt;是图像文件
(4)如果用户在文件2中上传psd文件---&gt;不是图像文件
(5)如果用户上传文件1中的jpg文件,则文件2中的psd文件---&gt;不是图像文件
(6)如果用户在文件1中上传psd文件,则文件2中的jpg文件---&gt;不是图像文件
(7)如果用户上传文件1和文件2中的jpg文件---&gt;是图像文件

以下是我尝试过的代码:

<?php
if(isset($_POST['submit']) && ($_POST['submit'] == 'ADD'))
{
     if(empty($_FILES['file1']['name']) && empty($_FILES['file2']['name']))
     {
          echo '2 files empty';
     }
     else
     {
          //HERE
          $allowed_extensions = array('jpg','jpeg','gif','png'); 

          foreach($_FILES as $file)
          {
              $name = $file['name'];

              if(!empty($name))
              {
                  $fileextension = strtolower(pathinfo($name, PATHINFO_EXTENSION));

                  if(in_array($fileextension, $allowed_extensions))
                  {
                      echo 'is an image file';
                  }
                  else
                  { 
                      echo 'is not an image file';
                  } 
              }
          }
     }
}

当我在文件1上传一个jpg文件而在文件2上传一个psd文件时,我得到以下输出:
是图像文件
不是图像文件

但我的预期输出仅显示&#34;不是图像文件&#34;。 我究竟做错了什么?
如何在HERE部分继续?有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

试试这个

外部循环声明变量HashMap<String, Class<?>> typesMap = new HashMap<>(); typesMap.put("int", Integer.class); typesMap.put("double", Double.class);

$flag = 0;

if(in_array($fileextension, $allowed_extensions)) { $flag == 0 ? 0 : 1; // its image here, but check if flag is already 1,if 1, dont update else make as 0 } else { $flag = 1; // error } 循环后添加此代码。

foreach

修改

if($flag) {
     echo 'is not an image file';
} else {
     echo 'is an image file';
}