Avatar billede krumel Nybegynder
31. marts 2002 - 17:52 Der er 9 kommentarer og
1 løsning

zip filer

jeg har *hørt* at det skulle muligt at få PHP til at zippe nogle filer på sin server.
Hvordan det ???

og hvis det er muligt, kan en eller anden så ikke lige give mig et eksempel på hvordan jeg zipper filen hej.txt
Avatar billede cheech Nybegynder
31. marts 2002 - 17:54 #1
det er gzip..
Det kan du eks i PHPmyAdmin
Avatar billede morw Nybegynder
31. marts 2002 - 18:00 #2
Denne bruger den class der er i PHPmyAdmin:


<?
// start ny zip init
$zipfile = new zipfile();


$filename = 'hej.txt';

if(file_exists($filename)) {

$fd = fopen ($filename, "r");
$dump_buffer = fread ($fd, filesize ($filename));

fclose ($fd);

$zipfile -> addFile($dump_buffer, $pic_row['filnavn_c']);
unset($dump_buffer);

} // slut if fil


// zip header
header('Content-Type: application/x-zip');

// output
echo $zipfile -> file();
?>
Avatar billede morw Nybegynder
31. marts 2002 - 18:02 #3
Husk at include filen med selve class'en, ikk!

Og lav lige denne linie om:

$zipfile -> addFile($dump_buffer, 'hej.txt');
Avatar billede priczor Nybegynder
31. marts 2002 - 19:00 #4
måske skulle du skrive class'en her

det stykke kode er jo uden nytte .. hvis ikek klassen er der
Avatar billede morw Nybegynder
31. marts 2002 - 19:37 #5
<?php
/* $Id: zip.lib.php,v 1.4 2002/02/10 09:29:50 loic1 Exp $ */


/**
* Zip file creation class.
* Makes zip files.
*
* Based on :
*
*  http://www.zend.com/codex.php?id=535&single=1
*  By Eric Mueller (eric@themepark.com)
*
*  http://www.zend.com/codex.php?id=470&single=1
*  by Denis125 (webmaster@atlant.ru)
*
* Official ZIP file format: http://www.pkware.com/appnote.txt
*
* @access  public
*/
class zipfile
{
    /**
    * Array to store compressed data
    *
    * @var  array    $datasec
    */
    var $datasec      = array();

    /**
    * Central directory
    *
    * @var  array    $ctrl_dir
    */
    var $ctrl_dir    = array();

    /**
    * End of central directory record
    *
    * @var  string  $eof_ctrl_dir
    */
    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";

    /**
    * Last offset position
    *
    * @var  integer  $old_offset
    */
    var $old_offset  = 0;


    /**
    * Adds "file" to archive
    *
    * @param  string  file contents
    * @param  string  name of the file in the archive (may contains the path)
    *
    * @access public
    */
    function addFile($data, $name)
    {
        $name = str_replace('\\', '/', $name);

        $fr  = "\x50\x4b\x03\x04";
        $fr  .= "\x14\x00";            // ver needed to extract
        $fr  .= "\x00\x00";            // gen purpose bit flag
        $fr  .= "\x08\x00";            // compression method
        $fr  .= "\x00\x00\x00\x00";    // last mod time and date

        // "local file header" segment
        $unc_len = strlen($data);
        $crc    = crc32($data);
        $zdata  = gzcompress($data);
        $zdata  = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug
        $c_len  = strlen($zdata);
        $fr      .= pack('V', $crc);            // crc32
        $fr      .= pack('V', $c_len);          // compressed filesize
        $fr      .= pack('V', $unc_len);        // uncompressed filesize
        $fr      .= pack('v', strlen($name));    // length of filename
        $fr      .= pack('v', 0);                // extra field length
        $fr      .= $name;

        // "file data" segment
        $fr .= $zdata;

        // "data descriptor" segment (optional but necessary if archive is not
        // served as file)
        $fr .= pack('V', $crc);                // crc32
        $fr .= pack('V', $c_len);              // compressed filesize
        $fr .= pack('V', $unc_len);            // uncompressed filesize

        // add this entry to array
        $this -> datasec[] = $fr;
        $new_offset        = strlen(implode('', $this->datasec));

        // now add to central directory record
        $cdrec = "\x50\x4b\x01\x02";
        $cdrec .= "\x00\x00";                // version made by
        $cdrec .= "\x14\x00";                // version needed to extract
        $cdrec .= "\x00\x00";                // gen purpose bit flag
        $cdrec .= "\x08\x00";                // compression method
        $cdrec .= "\x00\x00\x00\x00";        // last mod time & date
        $cdrec .= pack('V', $crc);          // crc32
        $cdrec .= pack('V', $c_len);        // compressed filesize
        $cdrec .= pack('V', $unc_len);      // uncompressed filesize
        $cdrec .= pack('v', strlen($name) ); // length of filename
        $cdrec .= pack('v', 0 );            // extra field length
        $cdrec .= pack('v', 0 );            // file comment length
        $cdrec .= pack('v', 0 );            // disk number start
        $cdrec .= pack('v', 0 );            // internal file attributes
        $cdrec .= pack('V', 32 );            // external file attributes - 'archive' bit set

        $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header
        $this -> old_offset = $new_offset;

        $cdrec .= $name;

        // optional extra field, file comment goes here
        // save to central directory
        $this -> ctrl_dir[] = $cdrec;
    } // end of the 'addFile()' method


    /**
    * Dumps out file
    *
    * @return  string  the zipped file
    *
    * @access public
    */
    function file()
    {
        $data    = implode('', $this -> datasec);
        $ctrldir = implode('', $this -> ctrl_dir);

        return
            $data .
            $ctrldir .
            $this -> eof_ctrl_dir .
            pack('v', sizeof($this -> ctrl_dir)) .  // total # of entries "on this disk"
            pack('v', sizeof($this -> ctrl_dir)) .  // total # of entries overall
            pack('V', strlen($ctrldir)) .          // size of central dir
            pack('V', strlen($data)) .              // offset to start of central dir
            "\x00\x00";                            // .zip file comment length
    } // end of the 'file()' method

} // end of the 'zipfile' class
?>
Avatar billede krumel Nybegynder
01. april 2002 - 17:44 #6
ups glemte helt at spørge.
Skal der laves nogle ekstra indstillinger i min på min apache server for at få det til at virke ???
Avatar billede morw Nybegynder
01. april 2002 - 18:53 #7
Ikke ud over at have gz compilet ind i php
Avatar billede krumel Nybegynder
01. april 2002 - 22:21 #8
????hvad er det helt præcis?????
Avatar billede morw Nybegynder
01. april 2002 - 23:08 #9
Ved instalation --with-zlib

http://www.php.net/manual/en/ref.zlib.php
Avatar billede krumel Nybegynder
02. april 2002 - 00:07 #10
takker og 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