2

出于安全目的,以防止恶意或不需要的文件类型,我将如何从外部/远程文件(又名 url 链接,如 www.someurl.com/video.avi)中识别 mimetypes?我读过有一种使用 cURL 的方法,但如果可能的话,我想找到一个 PHP 本机解决方案。

4

2 回答 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 回答