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