Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Download skripta koja podrzava resume download

[es] :: PHP :: Download skripta koja podrzava resume download

[ Pregleda: 6735 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ppavlovic
Pavlovic Petar
Izvođač radova na sajtovima

Član broj: 4306
Poruke: 139
*.smin.sezampro.yu.

Sajt: www.pavlovicpetar.com


+1 Profil

icon Download skripta koja podrzava resume download30.04.2004. u 01:04 - pre 243 meseci
Da li je neko radio nesto slicno:

Recimo, imam php skriptu download.php kojoj se kao parametar prosledjuje ime fajla koji hocu da downloadujem. U skripti se nalazi nesto kao

Code:

$fp = fopen($_REQUEST['file'], 'rb');
while (!feof($fp)){
 fread($str, $fp, 4096);
  echo $str;
}


E, sad... ovakva skripta ne podrzava Resume download, tako da ne mogu da serviram velike fajlove kroz ovu skriptu.

Sta treba da uradim da bih prilagodio skriptu da podrzava resume?


Pozdrav.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


+5 Profil

icon Re: Download skripta koja podrzava resume download30.04.2004. u 03:41 - pre 243 meseci
treba da proučiš HTTP/1.1 rfc (http://www.w3.org/Protocols/rfc2616/rfc2616.html), a naročito Content-Range heder.

zatim treba iz PHPa da otkriješ da li je klijent poslao Range zaglavlje sa getallheaders(), i da shodno tome proslediš odgovarajući deo fajla sa fseek() i fread(), i naravno da sa header() pošalješ response header (valjda opet Content-Range) da bi potvrdio klijentu da si razumeo i poslušao zahtev..

 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Download skripta koja podrzava resume download30.04.2004. u 09:27 - pre 243 meseci
Ovo i mene zanima. Tomice, da li bi mogao da napises jedan primjer ili ces nas pustiti da RTFM-amo?
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.medianis.net

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Re: Download skripta koja podrzava resume download30.04.2004. u 10:31 - pre 243 meseci
Da bi video kako izgledaju ovi hederi možeš da pustiš skidanje nekog fajla hroz HTTP pomoću FlashGet-a u delovima, pošto on prikazuje sadržaj HTTP komunikacije za svaku konekciju i tu se sve vrlo lepo vidi.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


+5 Profil

icon Re: Download skripta koja podrzava resume download30.04.2004. u 11:23 - pre 243 meseci
pa ne znam šta je problem.. koliko meni treba da iščitam rfc i odradim to, toliko bi trebalo i tebi..

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.7
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16

a evo i otprilike koda (na brzinu, napamet, neprovereno):

Code:

$first = 0;
$length = filesize($file);
$headers = getallheaders();
if (isset($headers['Range'])) {
    preg_match('~^(\d+)-(\d+)?~', $headers['Range'], $match);
    $first = $match[1];
    $full = $length;
    if (isset($match[2])) {
        $length = $match[2]-$first+1;
    }
    $last = $length-$first-1;
    header("HTTP/1.1 206 Partial content");
    header("Content-Range: bytes $first-$last/$full");
}
header("Content-Length: $length");
$fp = fopen($file, 'rb');
fseek($fp, $first);
echo fread($fp, $length);

 
Odgovor na temu

ppavlovic
Pavlovic Petar
Izvođač radova na sajtovima

Član broj: 4306
Poruke: 139
195.252.80.*

Sajt: www.pavlovicpetar.com


+1 Profil

icon Re: Download skripta koja podrzava resume download30.04.2004. u 18:42 - pre 243 meseci
zombie, Pretekao si me!

Ovo je moje resenje (nisam prepisivao od tebe), i provereno je, radi. Doduse, testirao sam ga samo FlashGet-om, ali sto ne bi radio sa ostalim file managerima.
Inace, mnogo je bitan redosled header parametara koji se prosledjuju. Imao sam problema jer mi je Content-Range isao pre Content-Length i tada nije radio resume.

Code:

<?php
    $file = $_REQUEST['file'];
    if (!file_exists("video/$file") && !is_file("video/$file")) {
        header("HTTP/1.1 404 Not Found");
        exit;
    }

    $filesize = filesize("video/$file");
    $headers = getallheaders();
    
    if ($headers['Range']) {
        $range = str_replace("bytes=", "", $headers['Range']);
        list($from, $to) = split('-', $range);
        header("HTTP/1.1 206 Partial Content");
    }

    $fp = fopen("video/$file", 'rb');

    header("Accept-Ranges: bytes");
    header("Content-Length: $filesize");

    if ($from) {
        header("Content-Range: bytes $from-$filesize/$filesize");
        fseek($fp, $from);        
    }

    header("Content-Type: video/x-msvideo");
    header("Content-Disposition: inline; filename=\"$file\"");
    
    while (!feof($fp)) {
        echo fgets($fp, 4096);
        flush();
    }

    fclose($fp);
?>


 
Odgovor na temu

ppavlovic
Pavlovic Petar
Izvođač radova na sajtovima

Član broj: 4306
Poruke: 139
*.smin.sezampro.yu.

Sajt: www.pavlovicpetar.com


+1 Profil

icon Re: Download skripta koja podrzava resume download01.05.2004. u 15:01 - pre 243 meseci
Jos nesto...

Na pocetku skripte treba staviti
Code:

set_time_limit(86400);
error_reporting(E_NONE);


Desi se da ako je dug fajl i download duze potraje, skripta timeout-uje i nesto od gresaka se pojavi u downloadovanom fajlu.
 
Odgovor na temu

[es] :: PHP :: Download skripta koja podrzava resume download

[ Pregleda: 6735 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.