检查远程文件是否是有效的mp3

时间:2012-10-04 18:36:16

标签: php mime-types

你能否告诉我一个好方法来检查一个远程(http)文件是否是一个有效的mp3,没有下载整个文件?

3 个答案:

答案 0 :(得分:1)

不要相信来自服务器的任何内容。 MIME类型可能是假的。甚至文件名。假设你期待一个MP3文件。存储正确的扩展名并进行验证。

至少标题以及文件名的正确扩展名。在最坏的情况下,他们的耳朵会发出可怕的噪音而且你会受到投诉。

答案 1 :(得分:0)

你可以尝试

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://...music.mp3");
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_FILETIME, true);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$header = curl_exec($curl);
$info = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
curl_close($curl);

$mp3_mimes = array('audio/mpeg','application/mp3','audio/mpeg3','audio/x-mpeg-3');
if (in_array($info, $mp3_mimes)) {
    // Somthign cooking
}

另一个建议是下载文件并通过读取标题信息验证

$curl = curl_init();

$localfile = "local.temp";
unlink($localfile);

$file = fopen($localfile, 'w+');
curl_setopt($curl, CURLOPT_URL, "http://robtowns.com/music/blind_willie.mp3"); // nput
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FILE, $file);
curl_exec($curl);
curl_close($curl);
fclose($file);

$mp3 = new mp3();
if ($info = $mp3->get_mp3($localfile, true, false)) {
    var_dump($info);
} else {
    unlink($localfile);
    // bad File
}

MP3Class

答案 2 :(得分:0)

检查文件大小,如果它的> 1mb验证...不是答案,但现在最好......