Php 允许某些图像格式不工作
我正试图允许某些格式上传到我的网站。我使用调用Php 允许某些图像格式不工作,php,getimagesize,Php,Getimagesize,我正试图允许某些格式上传到我的网站。我使用调用getimagesize()来标识图像类型(作为第三个参数返回)。我跟着去表演。代码如下: $img=$_FILES['img']; $info = getimagesize($img); if (($info[2] !== IMAGETYPE_GIF) && ($info[2] !== IMAGETYPE_JPEG) && ($info[2] !== IMAGETYPE_PNG)) { echo json_
getimagesize()
来标识图像类型(作为第三个参数返回)。我跟着去表演。代码如下:
$img=$_FILES['img'];
$info = getimagesize($img);
if (($info[2] !== IMAGETYPE_GIF) && ($info[2] !== IMAGETYPE_JPEG) && ($info[2] !== IMAGETYPE_PNG)) {
echo json_encode(array('bad' => 'Bad Format'));
exit();
} else {
echo json_encode(array('good' => 'Good format'));
exit();
}
无论我尝试上传什么文件格式,我总是得到else
语句<代码>回声json_编码(数组('good'=>'good format')代码>
为什么会发生这种情况?我如何修复它?由于您使用的是
&&
运算符,因此它将始终为false
$img=$_FILES['img'];
$accepted = array('image/jpeg','image/png','image/gif');
if (in_array($img['type'],$accepted)) {
echo json_encode(array('bad' => 'Good Format'));
exit();
} else {
echo json_encode(array('good' => 'Bad format'));
exit();
}
使用|
或或
获取所需内容
使用getimagesize()
将您的条件更改为|
(或)
由于您使用的是
&&
运算符,因此它将始终为false
$img=$_FILES['img'];
$accepted = array('image/jpeg','image/png','image/gif');
if (in_array($img['type'],$accepted)) {
echo json_encode(array('bad' => 'Good Format'));
exit();
} else {
echo json_encode(array('good' => 'Bad format'));
exit();
}
使用|
或或
获取所需内容
使用getimagesize()
将您的条件更改为|
(或)
你用错了接线员。您使用的是
&&
(and),这意味着如果必须满足条件才能返回所需内容,则全部3。另外,您正在与一个常量进行比较,我假设这是您想要与字符串进行比较的地方。因此,您可以轻松清理代码,如下所示:
if( !in_array($info[2], array('IMAGETYPE_GIF', 'IMAGETYPE_JPEG','IMAGETYPE_PNG') ) ) {
echo json_encode(array('bad' => 'Good Format'));
exit();
} else {
echo json_encode(array('good' => 'Bad format'));
exit();
}
或者实际使用|
(或)运算符在您的条件下运行:
if (($info[2] === IMAGETYPE_GIF) || ($info[2] === IMAGETYPE_JPEG) || ($info[2] === IMAGETYPE_PNG)) {
echo json_encode(array('bad' => 'Good Format'));
exit();
} else {
echo json_encode(array('good' => 'Bad format'));
exit();
}
你用错了接线员。您使用的是&&
(and),这意味着如果必须满足条件才能返回所需内容,则全部3。另外,您正在与一个常量进行比较,我假设这是您想要与字符串进行比较的地方。因此,您可以轻松清理代码,如下所示:
if( !in_array($info[2], array('IMAGETYPE_GIF', 'IMAGETYPE_JPEG','IMAGETYPE_PNG') ) ) {
echo json_encode(array('bad' => 'Good Format'));
exit();
} else {
echo json_encode(array('good' => 'Bad format'));
exit();
}
或者实际使用|
(或)运算符在您的条件下运行:
if (($info[2] === IMAGETYPE_GIF) || ($info[2] === IMAGETYPE_JPEG) || ($info[2] === IMAGETYPE_PNG)) {
echo json_encode(array('bad' => 'Good Format'));
exit();
} else {
echo json_encode(array('good' => 'Bad format'));
exit();
}
您要与const
's-IMAGETYPE\u JPEG
进行比较,请将它们放在引号中作为字符串进行比较-'IMAGETYPE\u JPEG'
。另外,您正在使用&
(和),您想使用|
(或)。您正在与const
's-IMAGETYPE\u JPEG
进行比较,将它们放在引号中作为字符串进行比较-'IMAGETYPE\u JPEG'
。另外,您正在使用&&
(和),您想使用|
(或)。我尝试了这两个示例,现在得到了第一个if语句。我用上载的任何文件得到了第一个if语句。您可以打印($info)
并显示返回的内容吗?我在哪里可以看到结果?我尝试了这两个示例,现在我得到了第一条if语句。我得到了第一条if语句,它包含了我上传的任何文件。你能打印($info)
并告诉我返回了什么吗?我在哪里可以看到结果?我试过了,但现在我得到了第一条if语句。你一直在使用getimagesize()
。您必须传递$\u文件['img'][tmp\u名称]
才能使其工作,例如:getimagesize($\u文件['img'][tmp\u名称])
。由于文件类型已在$\u文件中给出
。无需使用getimagesize()
。您能告诉我如何使用getimagesize()
吗?我试过了,但现在我得到了第一条if语句,您一直在以不同的方式使用getimagesize()
。您必须传递$\u文件['img'][tmp\u名称]
才能使其工作,例如:getimagesize($\u文件['img'][tmp\u名称])
。由于文件类型已在$\u文件中给出
。无需使用getimagesize()
。您能告诉我如何使用getimagesize()