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

Php 检查远程文件是否为有效的mp3,php,mime-types,Php,Mime Types,您能告诉我一种检查远程(http)文件是否为有效mp3的好方法,而不必下载整个文件吗?您可以试试 $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, tru

您能告诉我一种检查远程(http)文件是否为有效mp3的好方法,而不必下载整个文件吗?

您可以试试

$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
}

不要信任来自服务器的任何东西。MIME类型可能是假的。甚至是文件名。假设您需要一个MP3文件。存储正确的扩展名并进行验证


好的,至少是标题和文件名的正确扩展名。在最坏的情况下,他们的耳朵会发出可怕的噪音,你会收到投诉。

检查文件大小,如果大于1mb,请验证。。。不是答案,而是目前最好的…

什么是“有效的mp3”?您可以检查标题(请参阅),但这并不保证文件会播放。您必须下载整个文件才能确保这一点。MP3需要如何验证?完全只是远程服务器认为它是什么(MIME类型)?如果它有一个有效的ID3报头,那么一个“有效”的MP3可以是100千兆字节的随机垃圾,其中一个MP3帧被掩埋在中间,不确定这是正确的方法。首先,您只需在服务器发送内容时检查内容类型,但我可以轻松地向您发送一个内容类型为“audio/mpeg”的文件,其中包含全部垃圾。其次,
audio/mpeg
不仅是mp3,而且是mp2,它使用不同的编码。有时服务器发送
“Content Type:application/mp3”
@NullUserException您是对的。。我也会努力的thanks@NullUserException有时甚至是
application/octet-stream
。问题是,我制作了一个数据库,其中包含来自远程服务器的mp3声音链接,我正在制作一个脚本,该脚本将获取所有链接,并检查它们是否仍然“在线”,以及它们是否被删除以不访问某些远程托管站点。。但是,如果我下载所有的mp3声音并每天检查它们,我将产生巨大的流量…问题是,我制作了一个数据库,其中包含来自远程服务器的mp3声音链接,我正在制作一个脚本,它将获取所有链接并检查它们是否仍然“在线”,以及它们是否被删除以不访问某些远程托管站点。。但是,如果我下载所有的mp3声音并每天检查它们,我将产生巨大的流量。。。