Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачка файлов с сервера 
:(
    Опции темы
Serious2008
Дата 17.10.2011, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



у меня возникла проблема при скачке файлов, в некоторых браузерах по разному себя вебудт с разными файлами, например pdf в опере не может нормально скачаться, не знает размер финальный. Я гуглил нашёл вот этот скрипт отдачи файла, он вообще пересылает и отдаёт страницу, это вообще не то.
Код

function download($url, $new_name=''){ 

    $openfile = @fopen($url, 'r'); 

    if (!$openfile){ 

        die('Файл не найден'); 

    }else{ 

        $fileinfo = stream_get_meta_data($openfile); 

        preg_match('#Content-Length:[\s\S](\d+)#is', join('', $fileinfo['wrapper_data']), $outsize); 
        $filesize = !empty($outsize[1]) ? $outsize[1] : ''; 
        preg_match('#Last-Modified:[\s\S](.+GMT)#Uis', join('', $fileinfo['wrapper_data']), $outmod); 
        $last_modifed = !empty($outmod[1]) ? $outmod[1] : ''; 
        preg_match('#Content-Type:[\s\S](.*)\s#U', join(' ', $fileinfo['wrapper_data']), $outmime); 
        $mime_type = !empty($outmime[1]) ? $outmime[1] : ''; 
        fclose($openfile); 

        $etag = md5($filename); 
        $etag = substr($etag, 0, 8).'-'.substr($etag, 8, 7).'-'.substr($etag, 15, 8); 

        header('HTTP/1.1 200 Ok'); 
        header('Content-Length: '.$filesize); 
        header('ETag: "'.$etag .'"'); 
        header('Accept-Ranges: bytes'); 
        header('Connection: close'); 
        header('Content-Type: '.$mime_type); 
        header('Last-Modified: '.$last_modifed); 
        header('Content-Disposition: attachment; filename="'.$new_name.'";'); 

        echo readfile($filename); 

    } 
} 



Это сообщение отредактировал(а) Serious2008 - 17.10.2011, 18:08
PM MAIL   Вверх
$дмитрий
Дата 17.10.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Из старого проекта
Код

$arFile['TIME'] = filemtime($arFile['PATH']);
$arFile['SIZE'] = filesize($arFile['PATH']);
$arFile['MIME'] = 'application/octet-stream';
$rFile = fopen($arFile['PATH'], "rb");


if(isset($_SERVER['HTTP_RANGE'])){
    preg_match ("/bytes=(\d+)-/", $_SERVER['HTTP_RANGE'], $arMath);
    $nRange = $arFile['SIZE'] - (int)$arMath[1];
    fseek($rFile, ($arFile['SIZE'] - $nRange));

    header('HTTP/1.1 206 Partial Content');
    header('Last-Modified: ' . date('D, d M Y H:i:s \G\M\T' , filemtime($arFile['TIME'])));
    header('Cache-Control: None');
    header('Pragma: no-cache');
    header('Accept-Ranges: bytes');
    header('Content-Disposition: attachment; filename="'.$arFile['NAME'].'"');
    header('Content-Range: bytes '.($arFile['SIZE'] - $nRange).'-'.($arFile['SIZE'] - 1).'/'. $arFile['SIZE']);
    header('Content-Length: '.$nRange);
    header('Content-Type: '.$arFile['MIME']);
    header('Proxy-Connection: close');
    header('');

    fpassthru($rFile);
    fclose($rFile);
}else{
    header('HTTP/1.1 200 OK');
    header('Cache-Control: None');
    header('Last-Modified: ' . date('D, d M Y H:i:s \G\M\T' , $arFile['TIME']));
    header('Pragma: no-cache');
    header('Accept-Ranges: bytes');
    header('Content-Disposition: attachment; filename="'.$arFile['NAME'].'"');
    header('Content-Length: '.$arFile['SIZE']);
    header('Content-Type: '.$arFile['MIME']);
    header('Proxy-Connection: close');
    header('');
    fpassthru($rFile);
    fclose($rFile);
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0379 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.