如何在 PHP 中获取具有file_get_contents的 MIME 类型的图像

我需要获取图像的 MIME 类型,但我只有 我使用 的图像的正文。是否有可能获得 MIME 类型?file_get_contents


答案 1

是的,你可以这样得到它。

$file_info = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $file_info->buffer(file_get_contents($image_url));
echo $mime_type;

答案 2

如果使用 HTTP 下载文件,请不要猜测(也称为自动检测)MIME 类型。即使您使用 下载了文件,您仍然可以访问 HTTP 标头。file_get_contents

使用 $http_response_header 检索最后一次调用(或使用 http[s]:// 包装器的任何调用)的标头。file_get_contents

$contents = file_get_contents("https://www.example.com/image.jpg");
$pattern = "/^content-type\s*:\s*(.*)$/i";
if (($header = array_values(preg_grep($pattern, $http_response_header))) &&
    (preg_match($pattern, $header[0], $match) !== false))
{
    $content_type = $match[1];
    echo "Content-Type is '$content_type'\n";
}

仅当服务器未能提供(或仅提供通用的 catch-all 类型,如 )时才诉诸自动检测。Content-Typeapplication/octet-stream


推荐