我需要检查给定图像是否为JPEG。
if ($_FILES["fname"]["error"] > 0) {
$imgData = "hyperlink/holder.jpg";
} else {
$imgData ="hyperlink/" . $_FILES["fname"]["name"];
}
// Only accept jpg images
// pjpeg is for Internet Explorer should be jpeg
if (!($_FILES["fname"]["type"] == "image/pjpeg") ) {
print "I only accept jpg files!";
exit(0);
}
当它转到第一个if语句中的第一个语句时,它总是给我只接受jpg文件!
我该如何解决?
答案 0 :(得分:22)
尝试使用exif_imagetype图像功能。
示例:
if(exif_imagetype($filepath) != IMAGETYPE_JPEG){
echo 'Not a JPEG image';
}
答案 1 :(得分:3)
PHP具有如此良好的图像类型支持,我想知道为什么要限制你的应用程序。在几行代码中,您可以处理任何输入格式并转换为jpeg,如果这是一个要求......
$im = imagecreatefrompng(input_filename)
imagejpeg($im, output_filename);
答案 2 :(得分:2)
我相信以下工作:
另请注意:
(exif_imagetype($ ImagePathAndName)== IMAGETYPE_JPEG)
只读取寻找图像标题的前几个字节,因此不足以确认图像是否已损坏。
下面我在逻辑“和”声明中提到它,即必须传递这两个测试,以使图像有资格成为有效且无损的等等:
if ((exif_imagetype($ImagePathAndName) == IMAGETYPE_JPEG) && (imagecreatefromjpeg( $ImagePathAndName ) !== false ))
{
echo 'The picture is a valid jpg<br>';
}
注意:您需要将这行代码放在php代码的顶部,以避免在遇到伪造/损坏的图像文件时看到来自imagecreatefromjpeg($ ImagePathAndName)的警告消息。
ini_set(‘gd.jpeg_ignore_warning’, 1);
答案 3 :(得分:1)
Check the mime(多用途Internet邮件扩展)类型的文件。并验证您所需的类型。您还可以使用此代码检测png,gif。
if($_FILES["fname"]["type"] == "image/jpeg")
{
echo "File type is JPEG";
}
答案 4 :(得分:0)
使用$_FILES
时,您依赖于客户端发送的信息,这不是最好的事情(您已经看到它并不总是相同的,如果我没记错的话,{{1可以是假的。
如果您使用的是PHP&gt; = 5.3(或者可以安装PECL软件包),也许您可以查看扩展名Fileinfo。如果您使用的是旧版本,那么mime_content_type
呢?
而且,正如斯科特所说,为什么只允许jpeg?
更好地查看代码:当您处于第一种情况($_FILES['...']['type']
)时,您要将默认文件分配给error > 0
?为什么“超链接”周围的空间?
为什么你总是用来检查$imgData
,即使之前有几行错误?
要完成,您是否看过手册(Handling file uploads)?
答案 5 :(得分:0)
为什么不尝试创建一系列例外(您希望用户能够上传的文件)。
// Hyperlink for your website
$hyperlink = "http://www.yourwebsitehere.com";
if($_FILES['fname']['error'] > 0)
{
$image= $hyperlink . "/holder.jpg";
}
else
{
$image = $hyperlink . "/" . $_FILES['fname']['name'];
}
// Only accept files of jpeg format
$exceptions = array("image/jpg", "image/jpeg", "image/pjpeg");
foreach($exceptions as $value)
{
if($_FILES['fname']['type'] != $value)
{
echo "I only accept jpeg images!";
break; // Or exit();
}
}