Avatar billede mjall0w Nybegynder
24. december 2006 - 12:48 Der er 1 kommentar og
1 løsning

Lave zip fil med billeder

Hey exp.
Jeg er igang med at lave et script hvor den skal zippe en række billeder som jeg har gemt som tekst i databasen og ligger på computeren. Scriptet ser følgende ud og jeg bruger zip.lib.php fra phpMyadmin..
$zipfile = new zipfile;
    while ($array = mysql_fetch_array($ka)) {
$docname = $array[id].".php";
$docstring = "";
$pic = "users_photo/small/". $array["picname"] ."";
$piczip = $array["id"].".jpg";
$zipfile->addFile($pic, $piczip);
    }
$filezipped = $zipfile->file(); //the error could be here
$zipsize = strlen($filezipped);
header("Content-Disposition: atachment; filename=".$a['username'].".zip");
header("Content-Type: application/octet-stream");
header("Content-Length: $zipsize");
header("Content-Transfer-Encoding: binary");
header("Accept-Ranges: none");
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache");
header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT");

print $filezipped;


Det er et script jeg hentede fra et andet indlæg herinde..
Når jeg så åbner den zip fil jeg får, kan jeg se en masse "billeder" i zipfilen med de rigtige navne osv. men når jeg så åbner et af billederne i filen kan den ikke åbne det. Så den lagrer simpelthen ikke billedet :\
Håber i kan hjælpe
Avatar billede mjall0w Nybegynder
25. december 2006 - 13:16 #1
Fandt ud af det.. Skulle bruge en anden form for zip funktioner. Skiftede min zip.lib.php til:

class zipfile
{
    var $datasec = array();
    var $ctrl_dir = array();
    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    var $old_offset = 0;
   
    function add_dir($name) {
        $name = str_replace("\\", "/", $name);
       
        $fr = "\x50\x4b\x03\x04";
        $fr .= "\x0a\x00";
        $fr .= "\x00\x00";
        $fr .= "\x00\x00";
        $fr .= "\x00\x00\x00\x00";
       
        $fr .= pack("V",0);
        $fr .= pack("V",0);
        $fr .= pack("V",0);
        $fr .= pack("v", strlen($name) );
        $fr .= pack("v", 0 );
        $fr .= $name;
        $fr .= pack("V", 0);
        $fr .= pack("V", 0);
        $fr .= pack("V", 0);
       
        $this -> datasec[] = $fr;
        $new_offset = strlen(implode("", $this->datasec));
       
        $cdrec = "\x50\x4b\x01\x02";
        $cdrec .="\x00\x00";
        $cdrec .="\x0a\x00";
        $cdrec .="\x00\x00";
        $cdrec .="\x00\x00";
        $cdrec .="\x00\x00\x00\x00";
        $cdrec .= pack("V",0);
        $cdrec .= pack("V",0);
        $cdrec .= pack("V",0);
        $cdrec .= pack("v", strlen($name) );
        $cdrec .= pack("v", 0 );
        $cdrec .= pack("v", 0 );
        $cdrec .= pack("v", 0 );
        $cdrec .= pack("v", 0 );
        $ext = "\x00\x00\x10\x00";
        $ext = "\xff\xff\xff\xff";
        $cdrec .= pack("V", 16 );
        $cdrec .= pack("V", $this -> old_offset );
        $cdrec .= $name;
       
        $this -> ctrl_dir[] = $cdrec;
        $this -> old_offset = $new_offset;
        return;
    }
   
    function add_file($data, $name) {
        $fp = fopen($data,"r");
        $data = fread($fp,filesize($data));
        fclose($fp);
        $name = str_replace("\\", "/", $name);
        $unc_len = strlen($data);
        $crc = crc32($data);
        $zdata = gzcompress($data);
        $zdata = substr ($zdata, 2, -4);
        $c_len = strlen($zdata);
        $fr = "\x50\x4b\x03\x04";
        $fr .= "\x14\x00";
        $fr .= "\x00\x00";
        $fr .= "\x08\x00";
        $fr .= "\x00\x00\x00\x00";
        $fr .= pack("V",$crc);
        $fr .= pack("V",$c_len);
        $fr .= pack("V",$unc_len);
        $fr .= pack("v", strlen($name) );
        $fr .= pack("v", 0 );
        $fr .= $name;
        $fr .= $zdata;
        $fr .= pack("V",$crc);
        $fr .= pack("V",$c_len);
        $fr .= pack("V",$unc_len);
       
        $this -> datasec[] = $fr;
        $new_offset = strlen(implode("", $this->datasec));
       
        $cdrec = "\x50\x4b\x01\x02";
        $cdrec .="\x00\x00";
        $cdrec .="\x14\x00";
        $cdrec .="\x00\x00";
        $cdrec .="\x08\x00";
        $cdrec .="\x00\x00\x00\x00";
        $cdrec .= pack("V",$crc);
        $cdrec .= pack("V",$c_len);
        $cdrec .= pack("V",$unc_len);
        $cdrec .= pack("v", strlen($name) );
        $cdrec .= pack("v", 0 );
        $cdrec .= pack("v", 0 );
        $cdrec .= pack("v", 0 );
        $cdrec .= pack("v", 0 );
        $cdrec .= pack("V", 32 );
        $cdrec .= pack("V", $this -> old_offset );
       
        $this -> old_offset = $new_offset;
       
        $cdrec .= $name;
        $this -> ctrl_dir[] = $cdrec;
    }

   
    function file() {
        $data = implode("", $this -> datasec);
        $ctrldir = implode("", $this -> ctrl_dir);
       
        return
            $data .
            $ctrldir .
            $this -> eof_ctrl_dir .
            pack("v", sizeof($this -> ctrl_dir)) .
            pack("v", sizeof($this -> ctrl_dir)) .
            pack("V", strlen($ctrldir)) .
            pack("V", strlen($data)) .
            "\x00\x00";
    }
}
Avatar billede mjall0w Nybegynder
25. december 2006 - 22:49 #2
Lukker..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger leder til Lokal IT Servicecenter i Holstebro

Rambøll Management Consulting

Senior Software Engineer

Capgemini Danmark A/S

AI Data Architect
Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging