续上
再次,形式:
<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部分继续?有人可以帮帮我吗?
答案 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';
}