[HEADERS] Download script - resume

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 17:27

Kees

Serveradmin / BOFH / DoC
Topicstarter
Zoals sommigen wel weten is files.tweakers.net niets meer dan een php script die de download van een file verzorgt. Ik ben afentoe bezig nieuwe functies/optimalisaties erin aan te brengen.

Nu loop ik tegen het volgende aan. Ik wil graag resuming aanbieden, dit voor mensen met dingen als getright en langzame verbindingen die altijd op 99% compleet verbreken ;)

Hoe detecteer ik een request van een browser (gemakshalve browser, alhoewel een programma als getright de request zal doen) om te resumen? Ik neem aan dat hij een header stuurt, weet iemand welke header? Vervolgens moet er een header terug, wederom; welke?

Verder, zijn er nog requests of dingen waar men van zegt: dat mist er, die moet je zeker in het script hebben?

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 14-09 23:09
ik heb hier ook wel eens een scriptje voor geschreven, ik zoek 'm ff. Je kunt ook hier kijken, daar staat het vast uitgebreid in beschreven.

Ik ga er wel van uit dat $filename al klopt etc., maar dat zit vast al in het script.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$mimetype = "application/octet-stream";
$filesize = filesize($filename);
$headers = getAllHeaders();
if(isset($headers["Range"])){
    // Resumen.
    header('HTTP/1.1 206 Partial content');
    $val = explode('=',$headers['Range']);
    if(ereg("^-", $val[1])){
        $len = ereg_replace('-', '', $val[1]);
        $from = $filesize - $len;
        header('Content-Length: '.$len);
    }
    else if(ereg("-$",$val[1])){
        $from = ereg_replace("-","",$val[1]);
        header("Content-Length: ".(string)((int)$filesize-(int)$from));
    }
    $br = $from."-".(string)($filesize-1)."/".$filesize;
    header("Content-Range: bytes $br");
    header("Content-Type: ".$mimetype);
    header("Connection: close");
    
    $fp = @fopen($filename, "r");
    fseek($fp, $from);
    fpassthru($fp);
}
else{
    // niet resumen, alles naar de output dumpen
    header("Content-Length: ".$filesize);
    header("Content-Type: ".$mimetype);
    header("Connection: close");
    readfile($filename);
}
?>

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 17:27

Kees

Serveradmin / BOFH / DoC
Topicstarter
Zeer hartelijk bedankt :)
de rfc was ik al aan het lezen, en ik was zelfs daar al aanbeland maar een voorbeeld leest een stuk makkelijker dan een specificatie ;)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan