Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 8.186 pregleda

Najnovija ↓

Download skripta koja podrzava resume download 30.04.2004. u 02:04 · pre 274 meseca #1
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.
Potpis
MojNoviAuto.com - Tvoj prvi sajt za kupovinu novog automobila

ex http://www.paprikari.com, ex http://www.polovniautomobili.com
http://www.pavlovicpetar.com
Re: Download skripta koja podrzava resume download 30.04.2004. u 04:41 · pre 274 meseca #2
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..
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Download skripta koja podrzava resume download 30.04.2004. u 10:27 · pre 274 meseca #3
Ovo i mene zanima. Tomice, da li bi mogao da napises jedan primjer ili ces nas pustiti da RTFM-amo? :)
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: Download skripta koja podrzava resume download 30.04.2004. u 11:31 · pre 274 meseca #4
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.
Re: Download skripta koja podrzava resume download 30.04.2004. u 12:23 · pre 274 meseca #5
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);
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Download skripta koja podrzava resume download 30.04.2004. u 19:42 · pre 274 meseca #6
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);
?>

Potpis
MojNoviAuto.com - Tvoj prvi sajt za kupovinu novog automobila

ex http://www.paprikari.com, ex http://www.polovniautomobili.com
http://www.pavlovicpetar.com
Re: Download skripta koja podrzava resume download 01.05.2004. u 16:01 · pre 274 meseca #7
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.
Potpis
MojNoviAuto.com - Tvoj prvi sajt za kupovinu novog automobila

ex http://www.paprikari.com, ex http://www.polovniautomobili.com
http://www.pavlovicpetar.com
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme