Я программировал загрузчик файлов с помощью php для загрузки некоторых аудиофайлов (.mid, .wav, .mp3) с моего веб-сайта. Кажется, загрузка работает нормально, но когда я пытаюсь воспроизвести загруженный файл, Windows Media Player говорит:
Проигрыватель Windows Media не может воспроизвести файл. Проигрыватель может не поддерживать тип файла или может не поддерживать кодек, который использовался для сжатия файла.
Я посмотрел файлы с программным обеспечением для редактирования текста и заметил, что у всех «поврежденных» файлов есть дополнительный разрыв строки и «» в начале файла:
НОРМАЛЬНЫЙ Файл
RIFF † WAVEfmt D¬ ± data @ SÿSÿkÿkÿu o ÷ ½
[+ eŸ0a / ô> T = êFE] JjHLJ¶P — NÊU… S ‡ [Y _b \ ‘^ × [èZ» XïS3Q
ИСПРАВЛЕННЫЙ Файл:
RIFF † WAVEfmt D¬ ± data @ SÿSÿkÿkÿu o ÷ ½
[+ eŸ0a / ô> T = êFE] JjHLJ¶P — NÊU… S ‡ [Y _b \ ‘^ × [èZ» XïS3Q
Когда я удалил разрыв строки и тег , аудиофайл снова заработал.
Вот мой скрипт загрузки файлов:
$eyr = html_entity_decode($_GET['fileUrOpening']);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=".$eyr);
header('Pragma: public');
readfile($eyr);
Он вызывается из другого скрипта:
$result = queryMysql("SELECT * FROM fichierschants WHERE chant = '$id';");
$files = $result->num_rows;
if ($files == 0) {
echo '<td> There are no files for this song</td>';
}else{
echo '<td>';
for ($i = 0 ; $i < $files ; ++$i){
$result->data_seek($i);
$eode = $result->fetch_assoc()['emplacement'];
echo'<a href="./readingFile.php?fileUrOpening=';
echo $eode;
echo '"">';
$result->data_seek($i);
echo $result->fetch_assoc()['emplacement']."</a> <br>";
}
echo'</td>';
}
Я пробовал много разных предложенных способов загрузки своих файлов, но ни один из них, похоже, не работает должным образом.
Любая помощь будет принята с благодарностью,
Алекс.