在PHP中查找远程/外部文件mimetypes

时间:2012-05-08 04:32:22

标签: php url external mime-types

出于安全目的,为了防止恶意或不需要的文件类型,我如何识别来自外部/远程文件的mimetypes(也就是www.someurl.com/video.avi等网址链接)?我已经读过有一种方法可以使用cURL但是如果可能的话我想找到一个PHP本机解决方案。

2 个答案:

答案 0 :(得分:10)

您可以使用get_headers

示例:

<?php

$headers = get_headers('http://website.com/image.png');
var_dump($headers);

?>

输出:

array(8) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Tue, 08 May 2012 07:56:54 GMT"
  [2]=>
  string(14) "Server: Apache"
  [3]=>
  string(44) "Last-Modified: Sun, 06 May 2012 23:09:55 GMT"
  [4]=>
  string(20) "Accept-Ranges: bytes"
  [5]=>
  string(22) "Content-Length: 707723"
  [6]=>
  string(17) "Connection: close"
  [7]=>
  string(23) "Content-Type: image/png"
}

答案 1 :(得分:1)

假设您不想下载完整文件,可以检查远程服务器的mime类型:

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
return curl_getinfo($ch, CURLINFO_CONTENT_TYPE);

或者也可以使用curl,你可以下载完整的文件(通常不利于演出),然后在本地使用mime_content_type或finfo_file