запретить браузеру проигрывать mp3 в новом окне браузера - PullRequest
0 голосов
/ 21 февраля 2012

есть ли способ запретить браузеру открывать mp3 в новом окне браузера?

У меня есть нормальная ссылка на mp3-файл, такой как

 <a href="link_to_mp3">some.mp3</a>

и, конечно, вы можетескачать его правой кнопкой мыши -> сохранить как.но некоторые пользователи этого не знают.поэтому, если они нажмут на ссылку, откроется новое окно, где они смогут прослушать этот mp3.

проблема в том, что я хочу, чтобы пользователи загружали файлы один раз, а не прослушивали их тысячи раз на моем сервере;)

Ответы [ 3 ]

2 голосов
/ 21 февраля 2012

Только через html нельзя заставить ссылку открыть диалог сохранения файла.

Вместо этого вы можете достичь этого с помощью PHP и с некоторыми пользовательскими заголовками , как показано здесь

Простой файл download.php может выглядеть так:

    <?php

     $file = $_GET['file'];
     $dir = "path/to/files/";

     if(!file)
     {
         die('file not found');
     }
     else
     {
         $local_file = $dir . $file['filename'];
         $file = fopen($local_file, "r");  


         header("Cache-Control: public");
         header('Content-Type: application/octet-stream'); 
         header("Content-Description: File Transfer");
         header("Content-Disposition: attachment; filename=$file");
         header("Content-Transfer-Encoding: binary");

         // set download rate
         $download_rate = 100.0;
         // fetch the file
         fread($file, round($download_rate * 1024)); 
         // close the file stream
         fclose($file);
     }
     ?>

Где вы можете указать каталог, в котором сохранены все ваши файлы, а также скорость загрузки, если необходимо ограничить скорость, с которой файл может быть загружен.

Обновление

Забыл упомянуть, что тогда вы измените свои ссылки на:

 <a href="download.php?file=test.mp3">some.mp3</a>

где test.mp3 будет изменен для вашей конкретной загрузки

1 голос
/ 21 февраля 2012

быстро и грязно: может быть, вы .zip это ... чем браузер автоматически загружает файл

0 голосов
/ 21 февраля 2012

спасибо за ваш скрипт. это не сработало для меня, потому что переменная $ local_file была неправильной сборки .. не спрашивайте, на самом деле не профессионал php. все же ваш пост направил меня в правильном направлении. вот мое решение

<?php
$downloadfile = "directory/".$_GET['file'];
$filename = $_GET['file'];
$filesize = filesize($downloadfile);

header("Content-Type: audio/mpeg3"); 
header("Content-Disposition: attachment; filename=$filename"); 
header("Content-Length: $filesize");

readfile($downloadfile);
exit;
?>

о, и для других php-манекенов: НИКАКОГО БЕЛОГО ПРОСТРАНСТВА В НАЧАЛЕ ПИСАНИЯ !!!

...