[ nash_nikola @ 12.08.2007. 11:11 ] @
Pozdrav raja.

Ovih dana radim na jednoj foto galeriji u flashu, koja ima i download slike koja je ucitana. Download je uradjen je preko PHP skripti koje je sljedeca:

Code:
<?php
    
    $file = $_GET['fajl'];
    $folder = $_GET['folder'];
    
    $len = filesize($file);
    $ime = basename($file);
    
    header ("Cache-Control: ");
    header ("Pragma: ");
    header ("Content-type: application/octet-stream");
    header ("Content-Type: application/force-download");
    header ("Content-Length: $len");
    
    // Provjeravamo da li je IE ili ostali browseri
    if (preg_match("/MSIE 5.5/", $HTTP_USER_AGENT)) {
        header("Content-Disposition: filename=$ime");
    } else {
        header("Content-Disposition: attachment;filename=$ime");
    }
    
    header("Content-Transfer-Encoding: binary");
    $fp = fopen($folder.$file, "r");
    if ( $fp ) {
        fpassthru($fp);
        fclose($fp);
    } else {
        echo 'Ne mogu otvoriti fajl';
    }
    //readfile($folder.$file);
    exit;
    
?>


Skripta dobije iz flasha koju slika da skine i iz kojeg foldera. Skripta radi tj odradi download ali .. Uvijek ali :) . Kada je skine na racunar, Windows je vidi kao JPG, ali nema preview-a u Windows Picture and Fax Viewer ili ne moze importovati u bilo koji drugi program ( sem Photoshop-a ). U cemu je caka? Da li je to JPG-a koji su upload-ovani na server ili do nekog nacina download-a?

Unaprijed hvala!.

Pozdrav iz Sarajeva
[ Nemanja Avramović @ 12.08.2007. 12:02 ] @
Probaj da ovo:

Code:
    $fp = fopen($folder.$file, "r");
    if ( $fp ) {
        fpassthru($fp);
        fclose($fp);
    } else {
        echo 'Ne mogu otvoriti fajl';
    }


Zameniš sa ovim:

Code:
    if ( is_file($folder.$file) ) {
        readfile($folder.$file);
    } 


Ja ovako radim mada bi trebalo da može i sa tvojim kodom. Mada mislim da je ovo moje malkice brže. Nego, ako fajl ipak možeš da otvoriš u PhotoShopu, verujem da nije problem do skripte već do samih fajlova.

p.s. Izbacio sam echo 'Ne mogu otvoriti fajl'; jer ne vidim poentu echo-vanja toga u fajl koji se skida. Štaviše, mislim da je proveru da li fajl postoji najbolje odraditi na početku skripte, pre slanja bilo kakvih headera...
[ nash_nikola @ 12.08.2007. 12:26 ] @
Hvala, zaiste brze radi! Jedino ostaje "problemic" sa otvaranjem. Probao sam vise JPG fajlova ( direktno iz fotoaparata, sacuvanih iz Photoshopa, exportovanih iz Corela .. ) ali uvijek je isto ... ma nesto ce se skontat .... pozdrav
[ Nemanja Avramović @ 12.08.2007. 16:42 ] @
A da li te slike možeš da otvoriš u drugim programima pre uploadovanja na sajt? Kako ih uploaduješ na sajt (ftp ili preko HTML forme)?
[ nash_nikola @ 12.08.2007. 17:07 ] @
Slike upload-ujem preko FTP-a. A prije uploadovanja se mogu otvarati u bilo kojem programu. Ali nasao sam rjesenje

Ovaj dio kod-a:
Code:

    $len = filesize($file);
    $ime = basename($file);
    
    header ("Cache-Control: ");
    header ("Pragma: ");
    header ("Content-type: application/octet-stream");
    header ("Content-Type: application/force-download");
    header ("Content-Length: $len");


sam promjenio u:
Code:

    //$len = filesize($file);     <-- izbacio ovaj dio
    $ime = basename($file);
    
    header ("Cache-Control: ");
    header ("Pragma: ");
    header ("Content-type: application/octet-stream");
    header ("Content-Type: application/force-download");
    header ("Content-Length: ".filesize($folder.$file));     <-- i promjenio ovaj dio


i sad prepoznaje koja je tezina fajla u download prozoru i kad download-uje sliku moze se vidjeti u Windows Pciture and Fax Preview, kao importovati u ostalim programima.

Malo barkao po kodu i izletilo U PHP-u sam tek "beginner" tako da me je ovo "malo" izludjivalo, vise sam Flash-er i radim sa Actionscript-ama. Ali sto se mora (naucit), i Bogu nije tesko .
[ Nemanja Avramović @ 12.08.2007. 19:36 ] @
Hm, ne znam kako bi to uticalo na "validnost" slike. Ovaj gore kod, istina, ne bi prikazivao vreme preostalo za download i veličinu fajla koji se skida, ali trebalo bi sve da radi kako treba.
[ nash_nikola @ 13.08.2007. 12:02 ] @
Ne znam ni ja ali uglavnom sada sljaka. Hvala za sugestije. Ti radis sa PHP-om?
[ Nemanja Avramović @ 13.08.2007. 13:51 ] @
Da. No, odosmo u offtop
[ sale83 @ 14.08.2007. 05:30 ] @
Nadam se da ceo kod script-e nije takav kako sto si postovao u prvom postu plus sa izmenama...

Jer ako ti je takava nebi je stavljao na server..

SIGURNOST na prvom mestu...

poz sale
[ nash_nikola @ 14.08.2007. 08:25 ] @
Ne kontam bas najbolje Tek se popila prva jutarnja radna kafica Kao sto sam rekao gore, PHP ne poznajem. U cemu je caka?
[ Nemanja Avramović @ 14.08.2007. 09:13 ] @
Caka je u ovome:

Code:
    $file = $_GET['fajl'];
    $folder = $_GET['folder'];


Ako ti neko prosledi: download.php?fajl=index.php&folder=./ skripta će da mu da index.php za download. I tako može da ti skine sve fajlove sa servera
[ nash_nikola @ 14.08.2007. 09:26 ] @
Ahhhhaaaa A moze li se to preko "if" petlje da razdijeli ako npr $folder='./' i slicno da se onemoguci download ili postoji drugi kod?
[ sale83 @ 14.08.2007. 12:36 ] @
Naravno da moze sa IF ...

Najvaznije je da dozvolis download SAMO iz foldera gde su slike...

Poz
sale