0

ファイル全体をダウンロードせずに、リモート (http) ファイルが有効な mp3 かどうかを確認する良い方法を教えてください。

4

3 に答える 3

1

サーバーから来るものを信用しないでください。MIMEタイプは偽物である可能性があります。ファイル名も。MP3ファイルを期待していると仮定してください。正しい拡張子を保存して確認します。

少なくともヘッダーとファイル名の正しい拡張子。最悪の場合、彼らは彼らの耳にひどい音を立て、あなたは不満を得る。

于 2012-10-04T18:49:18.260 に答える
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
}

MP3クラス

于 2012-10-04T18:41:04.737 に答える
0

ファイルサイズを確認し、1MBを超える場合は検証します...答えではありませんが、今のところ最善です...

于 2012-10-04T19:14:45.617 に答える