Beim packen eines Zip Files Dateinamen ändern??

  • Hallo,


    ich war länger auf der suche nach einer Lösung um mit PHP ein ZIP File on the Fly zu erstellen und direkt zu downloaden. Habe da auch eine Lösung gefunden um das ganze direkt in PHP machen zu können. Allerdings war diese Variante bei großen Dateien oder bei einer großen Anzahl an Dateien viel zu langsam. Und so bin ich immer in einen Timeout gelaufen.


    Nun habe ich eine neue Variante gefunden die Soweit auch super läuft.


    PHP
    $fp = popen('zip -r - file1 file2 file3 file4 file5', 'r');    
        // pick a bufsize that makes you happy (8192 has been suggested).
        $bufsize = 8192;
        $buff = '';
        while( !feof($fp) ) {
           $buff = fread($fp, $bufsize);
           echo $buff;
        } 
        pclose($fp);



    Ich habe die Dateien auf dem Server mit IDs und nicht mit "echtem" Dateinamen gespeichert. Bei der vorigen Lösung konnte ich bei jeder zu packenden Datei den Dateinamen bestimmen, den ich gerne Hätte.
    Bei dieser Variante habe ich die Möglichkeit noch nicht gefunden. Ich würde die Dateien halt gern mit richtigem Namen packen. (Z.b. heißt eine Datei auf dem Server: 123456789.jpg und ich würde sie gern in dem ZIP Archiv als Beispiel.jpg speichern)


    Hat jemand von euch eine Lösung für dieses Problem?


    Vielen Dank schon mal ;)

  • Deine Methode macht nichts anderes als das auf dem Server installierte Programm "zip" zu nutzen. Du kannst dir nicht unbedingt sicher sein dass jeder Webspace dieses Programm hat/erlaubt.


    Die Anleitung findest du z.B. hier: zip(1): package/compress files - Linux man page


    Auf einen ersten Blick sah es nicht so aus, als könnte zip den Namen direkt beim packen anpassen.
    Notfalls musst halt die Dateien vorher kopieren und dann "zip --move" verwenden. Das löscht die (kopierten) Dateien nach dem packen.


    Thomas

  • Als erstes vielen Dank für die Antwort :)


    Also funktionieren tut es so bei mir. Und das ganze auch super schnell. Bin sehr zufrieden.


    Hab mir die Anleitung jetzt mal angesehen. leider habe ich auch noch nichts gefunden. Werde mal weiter schauen.


    Das Problem ist, dass es insgesamt um sehr viele Dateien geht und es auch sein kann, dass mehrere Leute gleichzeitig diese Funktion benutzen und deswegen brauche ich eindeutige Dateinamen. Was das ganze schwieriger macht.