2015-11-26 3 views
1

Будучи новым кодером, я продолжаю делать много проб и ошибок и придерживаться найденных находок, но метод, который у меня есть, в настоящий момент не работает со всеми браузерами.Загрузить файл MP3 по клику

Наш код PHP.

$songs = file_get_contents('https://example.com/tracks/'.$id.'/'); 
$filename = './tmp/'.$SongTitle.'.mp3'; // used for the file_put_contents. 
$filenames = '/tmp/'.$SongTitle.'.mp3'; // used for the echo 
file_put_contents($filename, $songs); 

HTML Download Button.

<div style="text-align: center; font-size: 20px;" class="testing-content"> 
<button type="button" class="btn btn-success"><a href="<?php echo $filenames; ?>" download='<?php echo $filenames; ?>' href="javascript:">Download</button></a> 
</div> 

Вы можете видеть, что я использую html5 и метод Javascript выше означает, что он имеет поддержку только на FireFox и Google Chrome.

Как я могу разрешить пользователям во всех браузерах загружать файл по нажатию нашей кнопки?

+0

В каких браузерах у вас возникли проблемы и что это за проблемы? См. Http://blog.deepbluesky.com/blog/-/browser-support-for-css3-and-html5_72/ – DelightedD0D

+0

Вы можете сделать это, отправив заголовки :) – icecub

+0

@icecub Не могли бы вы привести пример? –

ответ

3

Причина заключается в том, что FireFox и Google Chrome автоматически воспроизводят аудио или видео для mime-типа октетный поток, однако IE не поддерживает эту функцию.

Вам нужно добавить .mp3 расширения и мима типа в конфигурации сервера для загрузки файлов в IE.

0

Хорошо, а promissed:

<?php 

$file = "example.mp3"; 

header('Content-Description: File Transfer'); 
header('Content-Disposition: attachment; filename='.$file); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
header("Content-Type: audio/mp3"); 
readfile($file); 

?> 

Теперь просто создать гиперссылку или кнопку, которая указывает на этот PHP файл.

EDIT: Я должен добавить, что это всего лишь пример, как того требует! Этот метод очень неэффективен в его текущей форме. Если вы планируете использовать несколько аудиофайлов, вы должны сделать имя файла динамически через POST/GET.

+0

Используя этот метод, он загружает пустой файл, так же, как это сделал первый раз, когда я перепутал заголовки ... Я должен делать что-то неправильно. –

+0

@Open Probebly. Сначала я тестировал его, и он отлично работает. К сожалению, я не могу помочь вам в этом, потому что у меня нет вашего кода. Вы можете либо отредактировать свой вопрос, либо нажать на мой профиль. Вы найдете мой адрес электронной почты там для более подробной справки, если потребуется :) – icecub

+0

Я выстрелил вам по электронной почте! Благодарю. –

Смежные вопросы