Как сделать чтоб mp3 закачивался на андроид

Статус
Закрыто для дальнейших ответов.

asmilka

New Member
Регистрация
18.06.2013
Сообщения
5
Сайт на движе DLE как сделать чтоб файл mp3 закачивался на андроид, сейчас при переходе по ссылке файл звучит через проигрыватель, на других некоторых сайтах включается закачка. Подскажите где копать, может сыль полезную кто имеет
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
копать отправляемые заголовки

Код:
<?php
function downloadFile( $fullPath ){
  // Must be fresh start
  if( headers_sent() )
    die('Headers Sent');
  // Required for some browsers
  if(ini_get('zlib.output_compression'))
    ini_set('zlib.output_compression', 'Off');
  // File Exists?
  if( file_exists($fullPath) ){
   
    // Parse Info / Get Extension
    $fsize = filesize($fullPath);
    $path_parts = pathinfo($fullPath);
    $ext = strtolower($path_parts["extension"]);
   
    // Determine Content Type
    switch ($ext) {
	  case "pdf": $ctype="application/pdf"; break;
	  case "exe": $ctype="application/octet-stream"; break;
	  case "zip": $ctype="application/zip"; break;
	  case "doc": $ctype="application/msword"; break;
	  case "xls": $ctype="application/vnd.ms-excel"; break;
	  case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
	  case "gif": $ctype="image/gif"; break;
	  case "png": $ctype="image/png"; break;
	  case "jpeg":
	  case "jpg": $ctype="image/jpg"; break;
	  default: $ctype="application/force-download";
    }
    header("Pragma: public"); // required
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private",false); // required for certain browsers
    header("Content-Type: $ctype");
    header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";" );
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".$fsize);
    ob_clean();
    flush();
    readfile( $fullPath );
  } else
    die('File Not Found');
}
?>
 

asmilka

New Member
Регистрация
18.06.2013
Сообщения
5
[member=lekzd], Еслиб чуть-чуть поподробней что куда может с примером
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
В папку с *.mp3 положи .htaccess:

Код:
ForceType application/octet-stream
Header set Content-Disposition attachment
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
В папку с *.mp3 положи .htaccess:

Код:
ForceType application/octet-stream
Header set Content-Disposition attachment
ух ты, не знал про хедеры в .htaccess

lekzd, Еслиб чуть-чуть поподробней что куда может с примером
эту функцию надо вызывать для скачивания файла, например, ее можно положить в какой-нибудь скрипт download.php и гет-параметром передавать название файла, который нужно скачать, пробуйте, за вас все равно не напишем
 

asmilka

New Member
Регистрация
18.06.2013
Сообщения
5
В папку с *.mp3 положи .htaccess:

Код:
ForceType application/octet-stream
Header set Content-Disposition attachment
не вышло

[member=lekzd],
все замечательно, только не правильно определяет имя файла и расширение ttp://сайт/download*php?url=музыка*mp3
закачивает и обзывает download.php
опера ie как положено музыка.mp3
как бороться с этой бедой?
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
надо глядеть что приходит в следующие участки кода:
Код:
header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";" );
после filename отправляется название файла с сервера, если оно написано с ошибкой, браузер может присвоить свое по смыслу ('download.php' или 'загруженное')

может, еще header mime-типа надо по-стандарту другой отдавать
Код:
header('Content-Type: audio/mpeg');
http://www.cyberforum.ru/php-beginners/thread672654.html - тут похожее обсуждение вашей ситуации
 

asmilka

New Member
Регистрация
18.06.2013
Сообщения
5
Код:
filename=\"".basename($fullPath)."\";"
Убрал функцию (не дружу я с ними) Заменил
Код:
filename=".$_GET['url']
заработало правильно, Правда ограничить скачивание php файлов не помешат, ну с этим я думаю справлюсь))
[member=lekzd], Спасибо
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Правда ограничить скачивание php файлов не помешат,
надо чтобы все mp3 лежали в подпапках какой-то одной папки или в одной папке и выдавать 404, если идет обращение к другим папкам, самый простой способ
 

AngelGabriel

И имя мне - легион
Регистрация
23.11.2008
Сообщения
778
Код:
<?php
$filename = basename($_GET['mp']);
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-type: application/octec-stream");
header("Content-length: ".filesize($_GET['mp']));
echo file_get_contents($_GET['mp']);?>
 
Статус
Закрыто для дальнейших ответов.
Верх Низ