Показать сообщение отдельно

  #5  
Старый 02.05.2009, 02:33
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 850
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Смешные вы) Научитесь юзать курл...и спрашивается нахер он тут нужен? Курлом получать данные, а потом ф-цией readfile() их считывать, бред

Всё это легче реализовать через fopen(), тем более при закачке с удалённых хостов. readfile тут может отказаться очень неблагонадёжной функцией. Тем более если решишь сделать скачку по кускам, докачку и т.д....
Во-вторых, заголовки не точные. Mime-тип audio/mpeg, Transfer-Encoding нужно ставить binary

Ну и дальше через цикл всё закачивается.

PHP код:

<?php

$link 
'http://bla-bla.ru/1.mp3';
if (
$openFile = @fopen($link'rb')) {
    
$fileInfo stream_get_meta_data($openFile);
    
preg_match('#Content-Length:\s([0-9\S]*)#i'join(' '$fileInfo['wrapper_data']), $outSize);
    
$size = !empty($outSize[1]) ? $outSize[1] : '';
    
preg_match('#Last-Modified:\s(.*)\sGMT#i'join(' '$fileInfo['wrapper_data']), $outMod);
    
$lastMod = !empty($outMod[1]) ? $outMod[1] : '';
    
    
header('HTTP/1.1 200 OK');
    
header('Content-Length: '.$size);
    
header('Content-Type: audio/mpeg');
    
header('Last-Modified: '.$lastMod);
    
header('Content-Disposition: attachment; filename="имя_файла.мп3";');
    
header('Cache-Control: private');
    
header('Content-Transfer-Encoding: binary');
    
header('Accept-Ranges: bytes');      
    
    while (!
feof($openFile) && !connection_status()) {
        echo 
fread($openFile1024);
        
flush();
        
ob_flush();
    }

}

?>
З.Ы. какой ещё порядок заголовков? Вы чего?
 
Ответить с цитированием