我正试图找到一种方法(几乎)确定网址是真实的视频文件。
我当然检查get_headers以检查URL是否存在以及标题内容类型:
function get_http_response_code($theURL)
{
$headers = get_headers($theURL);
return substr($headers[0], 9, 3);
}
function isURLExists($url)
{
if(intval(get_http_response_code($url)) < 400)
{
return true;
}
return false;
}
function isFileVideo($url)
{
$headers = get_headers( $url );
$video_exist = implode(',',$headers);
if (strpos($video_exist, 'video') !== false)
{
return true;
}
else
{
return false;
}
}
也许我回答自己,但也许还有其他更强大的解决方案(主要用于视频类型)。 不知道是否可能,但我可以先下载文件metadatas并返回与此测试相关的文件吗?
非常感谢!
答案 0 :(得分:0)
您可以尝试使用此代码,
<?php
function getUrlMimeType($url) {
$buffer = file_get_contents($url);
$finfo = new finfo(FILEINFO_MIME_TYPE);
return $finfo->buffer($buffer);
}
?>
您需要在PHP.ini上启用扩展程序
php_fileinfo.dll
如果您想下载文件的某些部分,
$filename = $url;
$portion=8192; // if you want upto 8192 byte to read
$handle = fopen($filename, "rb");
$contents = fread($handle, $portion);
fclose($handle);
如果你想从文件使用中获取$url
的某些部分,
$filename = $url;
$from=10000; // if you want to read file from 1000 byte
$to=9999; //if you want to read up to 999 9byte
$handle = fopen($filename, "rb");
$skip= fread($handle, $from);
$contents = fread($handle, $to);
fclose($handle);
然后你可以检查mime类型的文件。 感谢
答案 1 :(得分:0)
当然您无法确定,但最佳做法是检查文件的第一个字节,并根据此信息识别MIME类型。
在此问答中找到它的一个例子。答:https://stackoverflow.com/a/8225754/2797243