出于安全目的,以防止恶意或不需要的文件类型,我将如何从外部/远程文件(又名 url 链接,如 www.someurl.com/video.avi)中识别 mimetypes?我读过有一种使用 cURL 的方法,但如果可能的话,我想找到一个 PHP 本机解决方案。
问问题
4799 次
2 回答
11
您可以使用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"
}
于 2012-05-08T08:02:02.837 回答
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
于 2017-06-27T14:53:40.667 回答