Скачка файла как на slil.ru

Discussion in 'PHP' started by I love this game, 8 Aug 2009.

  1. I love this game

    I love this game Elder - Старейшина

    Joined:
    23 Dec 2008
    Messages:
    162
    Likes Received:
    37
    Reputations:
    18
    Подскажите плз кусок кода, что бы предлагалось скачать файл с задержкой в n-секунд, как на slil.ru!
     
  2. [QwyZ]

    [QwyZ] Banned

    Joined:
    7 Jul 2009
    Messages:
    71
    Likes Received:
    27
    Reputations:
    5
    <script language="javascript">
    function StartGlide() {
    y = 60;
    action = window.setInterval("Glide()",1000);
    }
    function Glide() {
    y = y - 1;
    document.getElementById('errt').innerHTML= y;
    if (parseInt(y)<='0') {
    document.getElementById('countdown').style.display='none';
    document.getElementById('links').style.display='block';
    window.clearInterval(action);
    }
    }

    </script>
    <table align="center">
    <tr>
    <td>
    <div id="countdown" style="display:block;" align="center"><b>Дождитесь своей очереди<br><span id="errt" name="errt">60</span> секунд</b></div>
    <div id="links" align="center" style="display:none;">
    <a href="link">Ваша ссылка на скачивание файла</a>
    </div>
    </td>
    </tr>
    </table>
    <script language="javascript">StartGlide();</script>
     
    1 person likes this.
  3. I love this game

    I love this game Elder - Старейшина

    Joined:
    23 Dec 2008
    Messages:
    162
    Likes Received:
    37
    Reputations:
    18
    Спасибо) Но че то не начинается скачка!
     
    #3 I love this game, 8 Aug 2009
    Last edited: 8 Aug 2009
  4. [QwyZ]

    [QwyZ] Banned

    Joined:
    7 Jul 2009
    Messages:
    71
    Likes Received:
    27
    Reputations:
    5
    nezachto,nezabud v
    "document.getElementById('links').style.display='bl ock';"
    izmenit na 'block',eto bagi vbulletin zdes
     
  5. [QwyZ]

    [QwyZ] Banned

    Joined:
    7 Jul 2009
    Messages:
    71
    Likes Received:
    27
    Reputations:
    5
    rabotaet?
     
  6. I love this game

    I love this game Elder - Старейшина

    Joined:
    23 Dec 2008
    Messages:
    162
    Likes Received:
    37
    Reputations:
    18
    ))) О изменил, спс, но он просто предлагает скачать, а можно так что бы уже вылетело окошко с закачкой?
     
  7. [QwyZ]

    [QwyZ] Banned

    Joined:
    7 Jul 2009
    Messages:
    71
    Likes Received:
    27
    Reputations:
    5
    tochnee vot tak:

    iz

    document.getElementById('countdown').style.display ='none';
    document.getElementById('links').style.display='block';
    window.clearInterval(action);

    v

    document.getElementById('countdown').style.display ='none';
    document.getElementById('links').style.display='block';
    location.href="SSYLKA";
    window.clearInterval(action);
     
    #7 [QwyZ], 8 Aug 2009
    Last edited: 8 Aug 2009
  8. I love this game

    I love this game Elder - Старейшина

    Joined:
    23 Dec 2008
    Messages:
    162
    Likes Received:
    37
    Reputations:
    18
    Все, огромноее спасибо)
     
    #8 I love this game, 8 Aug 2009
    Last edited: 8 Aug 2009
  9. [QwyZ]

    [QwyZ] Banned

    Joined:
    7 Jul 2009
    Messages:
    71
    Likes Received:
    27
    Reputations:
    5
    ne spasibo , a plusov bolshe stav' :D shuchu
     
  10. I love this game

    I love this game Elder - Старейшина

    Joined:
    23 Dec 2008
    Messages:
    162
    Likes Received:
    37
    Reputations:
    18
    Мог бы больше, поставил бы!)
     
  11. dr.5y51em

    dr.5y51em New Member

    Joined:
    3 Aug 2009
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    Щас полетят маты в мою сторону, но безопаснее всего выдавать через PHP. Хотя очень сильно напрягает сервер. Скрипт не мой, где спёр не помню, но мне оч. нравиться что можно скорость отдачи контролировать... В общем вот.

    PHP:
    function file_download($filename$mimetype='application/octet-stream') {
    // Задаем ограничение скорости закачки в байтах в секунду
    // или ноль, если ограничений не требуется.
    // Другим способом задания этого параметра может быть его определение
    // через константу, посредством функции define(), в этом случае значение
    // будет неизменным для любого запуска скрипта.
    // Можно его значение задавать и снаружи функции исходя из каких-либо соображений,
    // например, роли пользователя или загрузки сервера, и получать его
    // посредством директивы global.
      
    $download_speed 25000// Около 25 килобайт в секунду.
    // Задаём время дискретизации. С этой периодичностью клиенту будут отдаваться
    // блоки данных считываемые из файла.
      
    $time_discret 1;
      if (
    file_exists($filename)) {
        
    header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');
        
    header('Content-Type: ' $mimetype);
        
    header('Last-Modified: ' gmdate('r'filemtime($filename)));
        
    header('ETag: ' sprintf('%x-%x-%x'fileinode($filename), filesize($filename), filemtime($filename)));
        
    header('Content-Length: ' . (filesize($filename)));
        
    header('Connection: close');
        
    header('Content-Disposition: attachment; filename="' basename($filename) . '";');
        
    $f=fopen($filename'r');
    // Проверяем задано ли ограничение скорости
        
    if((int) $download_speed 0) {
          while(!
    feof($f)) {
    // Включаем таймер
            
    $time_start microtime(true);
    // Читаем блок данных, которых мы должны отдать за время дискретизации
            
    echo fread($fceil($download_speed*$time_discret));
            
    flush();
    // Находим время за которое наши данные отправлены
            
    $time_end microtime(true);
            
    $time $time_end $time_start;
    // Если время, оставшееся до конца времени дискретизации больше нуля,
    // то приостанавливаем выполнение скрипта на величину этого времени в микросекундах.
            
    if($time_discret-$time 0usleep(($time_discret-$time)*1000000);
          }
        }
        else {
    // Если у нас не задано ограничение скорости, то выполняем старый вариант кода
          
    while(!feof($f)) {
            echo 
    fread($f1024);
            
    flush();
          }
        }
        
    fclose($f);
      } else {
        
    header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
        
    header('Status: 404 Not Found');
      }
      exit;
    }
    file_download('ИМЯ_ФАЙЛА');
     
    1 person likes this.