检查URL是否是PHP中的视频文件的最佳方法?

时间:2016-02-29 18:15:26

标签: php file video http-headers

我正试图找到一种方法(几乎)确定网址是真实的视频文件。

我当然检查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并返回与此测试相关的文件吗?

非常感谢!

2 个答案:

答案 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