我有一些名称中没有扩展名的图像。现在,当我想打开它们时,一些浏览器无法将数据检测为图像并显示二进制文本。
正确的脚本 (php) 是什么,它将获取此类图像的地址,检测其格式并使用图像输出设置正确的标头?
exif_imagetype函数正确检测它是什么类型的图像,然后使用image_type_to_mime_type函数来获取所需的MIME类型:
header("Content-type: " . image_type_to_mime_type(exif_imagetype("image.jpg")));
不过,您需要内置的exif支持。我推荐这样做,因为它实际上检查了文件的签名,而不是盲目地假设基于扩展名的 mime 类型。但是,如果这不是一个选项,则必须像其他人提到的那样回退到 fileinfo。
你应该检查 fileinfo()http://www.php.net/manual/en/function.finfo-file.phpFileinfo 检测文件类型,您可以根据该文件类型设置标头。
使用这个:
<?php
$filename = 'http://static.php.net/www.php.net/images/php.gif';
$file = fopen($filename, 'rb');
$size = getimagesize($file);
switch ($size['mime']) {
case "IMAGETYPE_GIF":
echo "<strong class="highlight">Image</strong> is a gif";
break;
case "IMAGETYPE_JPEG":
echo "<strong class="highlight">Image</strong> is a jpeg";
break;
case "IMAGETYPE_PNG":
echo "<strong class="highlight">Image</strong> is a png";
break;
}
?>
finfo_file()
来确定相关文件的MIME类型,然后发送包含该信息的内容类型标头。