Seite 1 von 5 1234 ... LetzteLetzte
Ergebnis 1 bis 15 von 64

Thema: Zip-Klasse

  1. #1
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869

    Zip-Klasse

    hier eine sehr einfach zu handhabene Klasse von Eric Mueller.

    Erstellt zip-Archive mit Ordnerstrukturen, alles so, wie man es von einem Packer kennt.

    Beispiel:
    PHP-Code:
    $zip=new zipfile;
    $zip->addFile("/files/song.mp3","song.mp3",time());
    //bei senden wird einfach das file ausgegeben, man kann es aber auch normal speichern
    echo $zip->file(); 

    und hier eine einfache Funktion, die ein Zipfile in ein Array einliest:
    PHP-Code:
    function getZipFileContents($file_contents$full_information FALSE)
    {

        
    /* getting position of central directory */
        
        
    $file_size strlen($file_contents);
        
    $pointer $file_size 277;
        
        if (
    $pointer 0) { $pointer 0; }
        
    $pointer strpos($file_contents"\x50\x4b\x05\x06\x00\x00\x00\x00"$pointer) + 4;
        
    /* reading central directory */
        
    $central_directory unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size'substr($file_contents$pointer18));
        
    $pointer $central_directory['offset'];
        
    $archive_data = array();
        
    /* getting archive data */
        
    for ($t $central_directory['disk_start']; $t $central_directory['disk_entries']; $t++)
        {
            
    /* reading central file header */
            
    $central_file_header unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset'substr($file_contents$pointer46));
            
    /* extracting filename */
            
    $filename substr($file_contents$pointer 46$central_file_header['filename_len']);
            
    /* extracting extrafield */
             
    $extra substr($file_contents$pointer 46 $central_file_header['filename_len'], $central_file_header['extra_len']);        /* extracting comment */
            
    $comment substr($file_contents$pointer 46 $central_file_header['filename_len'] + $central_file_header['extra_len'], $central_file_header['comment_len']);
            
    $pointer += 46 $central_file_header['filename_len'] + $central_file_header['extra_len'] + $central_file_header['comment_len'];
            
    /* filter directories */
            
    if ($filename{strlen($filename) - 1} != '/')
            {
                
    /* calculating position of compressed content */
                
    $content_start $central_file_header['offset'] + 30 $central_file_header['filename_len'] + $central_file_header['extra_len'];
                if (
    $central_file_header['compression'] == 0)
                {
                    
    /* extracting uncompressed content */
                    
    $content substr($file_contents$content_start$central_file_header['compressed_size']);
                } else {
                    
    /* extracting compressed content */
                    
    $content substr($file_contents$content_start$central_file_header['compressed_size']);
                    
    $content .= pack('VV'$central_file_header['crc'], $central_file_header['size']);
                    
    /* decompressing content */
                    
    $content = @gzinflate($content);
                }
                
    /* getting filestatus */
                
    $status 'ok';
                if (
    $content === FALSE && $status == 'ok') { 
                    
    $status 'err_decompress'
                }
                if (
    crc32($content) != $central_file_header['crc'] && $status == 'ok'
                { 
                        
    $status 'err_crc'
                }
                if (
    strlen($content) != $central_file_header['size'] && $status == 'ok'
                { 
                    
    $status 'err_length'
                }
                
    /* saving information */
                
    if ($full_information)
                {
                    if (
    $central_file_header['mdate'] && $central_file_header['mtime'])
                    {
                        
    $hour = ($central_file_header['mtime'] & 0xF800) >> 11;
                        
    $minute = ($central_file_header['mtime'] & 0x07E0) >> 5;
                        
    $seconde = ($central_file_header['mtime'] & 0x001F)*2;
                        
    $year = (($central_file_header['mdate'] & 0xFE00) >> 9) + 1980;
                        
    $month = ($central_file_header['mdate'] & 0x01E0) >> 5;
                        
    $day $central_file_header['mdate'] & 0x001F;
                        
    $timestamp mktime($hour$minute$seconde$month$day$year);
                    } else {
                        
    $timestamp time();
                    }
                      
    $i count($archive_data);
                       
    $archive_data[$i] = array();
                       
    $archive_data[$i]['filename'] = $filename;
                       
    $archive_data[$i]['timestamp'] = $timestamp;
                       
    $archive_data[$i]['comment'] = $comment;
                       
    $archive_data[$i]['extrafield'] = $extra;
                       
    $archive_data[$i]['status'] = $status;
        
                    if (
    $status == 'ok')
                    {
                        
    $archive_data[$i]['content'] = $content;
                    } else {
                        
    $archive_data[$i]['content'] = FALSE;
                    }
                } else {
                    if(
    $status == 'ok')
                    {
                        
    $archive_data[$filename] = $content;
                    } else {
                        
    $archive_data[$filename] = FALSE;
                    }
                }
            }
        }
        return 
    $archive_data;

    Angehängte Dateien Angehängte Dateien
    Geändert von steffenk (14.10.2006 um 17:23 Uhr)

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  2. #2
    TP-Senior Avatar von madace
    Registriert seit
    Jan 2003
    Ort
    Frankfurt/M.
    Beiträge
    183
    Mal 'ne blöde Frage: wozu braucht man das wenn's doch schon X gute Packer-Programme gibt??
    "Das Gewissen ist die Stimme der Seele. (J.J. Rousseau)"

  3. #3
    TP-Greis Avatar von Boris
    Registriert seit
    Mar 2001
    Ort
    Stuttgart & Kornwestheim
    Beiträge
    9.420
    Um Daten / Texte / Dokus / Bilder einer Webseite online zu packen und dem User als ein .zip zum Download zur Verfügung zu stellen? ;-)
    My software never has bugs. It just develops random features ...

    » DevShack - die Website des freien Webentwicklers Boris

  4. #4
    TP-Insider Avatar von SteffenR
    Registriert seit
    Dec 2004
    Ort
    Bremen
    Beiträge
    699
    Schaut interessant aus.. danke für den Tip

  5. #5
    321
    321 ist offline
    TP-Specialist Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    gibts da keine Readme oder how2use oder ähnliches dazu?
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  6. #6
    TP-Greis Avatar von Boris
    Registriert seit
    Mar 2001
    Ort
    Stuttgart & Kornwestheim
    Beiträge
    9.420
    Die Klasse ist doch so gut wie selbsterklärend, und in der Datei sind ja auch zwei Links mit drin
    My software never has bugs. It just develops random features ...

    » DevShack - die Website des freien Webentwicklers Boris

  7. #7
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    was braucht man mehr als $zip->addFile und dann das Ergebnis als $zip->file() ?

    Die Parameter zum übergeben stehen ja in der Funktion, deshalb habe ich oben
    das Beispiel angegeben.
    Einfacher gehts kaum noch

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  8. #8
    321
    321 ist offline
    TP-Specialist Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Hätt ja sein können, dass man zB. mehrere Dateien zusammen in ein ZIP packen kann.
    Möglich ist auch, die ZIP dann zu speichern, oder gleich einem DL zuzuführen.
    Also ums Zippen noch a bissi Rund-Drum-Komfort.

    Links:
    erster: The following error happened: Cannot load object of type code with ID: 535
    zweiter: The following error happened: Cannot load object of type code with ID: 470
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  9. #9
    TP-Greis Avatar von Boris
    Registriert seit
    Mar 2001
    Ort
    Stuttgart & Kornwestheim
    Beiträge
    9.420
    Du kannst mehrere Dateien in ein ZIP packen mit der Klasse.

    Code:
    $zip=new zipfile;
    $zip->addFile("/files/song1.mp3"),"song1.mp3",time());
    $zip->addFile("/files/song2.mp3"),"song2.mp3",time());
    $zip->addFile("/files/song3.mp3"),"song3.mp3",time());
    echo $zip->file();
    My software never has bugs. It just develops random features ...

    » DevShack - die Website des freien Webentwicklers Boris

  10. #10
    321
    321 ist offline
    TP-Specialist Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Danke!
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  11. #11
    TP-Veteran Avatar von fettmme
    Registriert seit
    Feb 2002
    Beiträge
    1.491
    Danke
    class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
    public function __construct(){ if(!$this) die(' '); } }
    http://www.thedailywtf.com/

  12. #12
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    schiddebön
    Die Rubrik finde ich sehr gut, das könnte eine ideale interne Fundgrube werden.
    TP Search <=> Google

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  13. #13
    TP-Member
    Registriert seit
    Aug 2005
    Beiträge
    83
    Hi, ich wuerde mich auch fuer diese klasse interessieren!
    habs auch schon auprobiert mit einem *.gif!
    allerdings ist dass:
    Zitat Zitat von ergebnis des scriptes
    PKÂI3ð›üc logo1.gifËÉOÏ7ÔKÏLð›üc PKÂI3ð›üc logo1.gifPK7>
    alles was dabei herauskommt

    Ich habe 1 zu 1 den code von St@eff.en verwendet, nur dass ich statt dem mp3 die datei logo1.gif verwendet habe!!!

    Kann mir da wer weiterhelfen??

    mfg joggl

  14. #14
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Hat doch geklappt.
    Allerdings nutzt es Dir nichts, dieses am Bildschirm auszugeben.
    Entweder Du speicherst das in eine logo.zip oder du sendest es mit entsprechenden Headern, so das der speichern-Dialog kommt.

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  15. #15
    TP-Member
    Registriert seit
    Aug 2005
    Beiträge
    83
    Zitat Zitat von St@eff.en
    ...
    Entweder Du speicherst das in eine logo.zip
    ...
    wo kann ich dass einstellen dass die datei als zip gespeichert wird oder welche funktion benötige ich dafür?

Seite 1 von 5 1234 ... LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51