簡體   English   中英

如何在 PHP 中使用 file_get_contents 獲取圖像的 MIME 類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM