[英]How to get MIME-type of an image with file_get_contents in PHP
我需要獲取圖像的 MIME 類型,但我只有使用file_get_contents
獲得的圖像主體。 是否有可能獲得 MIME 類型?
是的,你可以像這樣得到它。
$file_info = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $file_info->buffer(file_get_contents($image_url));
echo $mime_type;
通過只檢查 Mime 類型來非常小心你所做的! 如果你真的想確定一個圖像實際上是一個圖像,最安全的方法是用一個圖像處理庫打開它並用該庫寫入它。 如果圖像實際上是惡意代碼,這將失敗,並保證您實際上正在將圖像文件寫入磁盤。 舉個例子,您可以輕松地誘使 MIME 認為某些惡意代碼是 GIF。
要更直接地回答您的問題,請使用FileInfo PECL 模塊。
如果您使用 HTTP 下載文件,請不要猜測(也稱為自動檢測)MIME 類型。 即使您使用file_get_contents
下載了文件,您仍然可以訪問 HTTP 標頭。
使用$http_response_header
檢索最后一次file_get_contents
調用(或任何帶有http[s]://
wrapper 的調用)的標頭。
$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";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.