[PHP] Complete folders (met subs) in een zip file stoppen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met het stoppen van (complete) folders (met bestanden, o.a. ook in sub folders) in zip files. Waarbij direct het probleem zit bij de subfolders.

De zip file genereren gaat heel erg simpel via de class die ik vond op de volgende URL: http://codewalkers.com/seecode/65.html

Alleen een complete folder erin stoppen lukt vooralsnog niet...

Er leek mij namelijk maar één manier om dit te doen; alle paths naar de files verkrijgen en vanuit daaruit de dirs en files aanmaken in de zip file. Aangezien dit zo moet via de betreffende zip file class.

Echter kom ik dan bij mij uiteindelijk vraag; hoe doe ik dit? Hoe haal ik deze paths ofwel alle (sub)dirs en bestanden uit een bepaalde dir? Dit is mij vooralsnog niet gelukt (loop steeds vast op een probleem) en ditzelfde probleem hebben ook deze volgende al geschreven scriptjes: http://codebase.nl/?command=viewcode&id=20 , http://codebase.nl/?command=viewcode&id=177 ... En ook veelvuldig andere scriptjes die ik vond via de search hier of via Google.

Maar waar lopen deze vast? Op de subdirs, want het is simpel om de dirs en bestanden uit één map te halen. Maar om ook de bestanden (en eventueel mappen) uit de subdirs te halen. Dat is een compleet ander verhaal. Zo haalt één van de bovenstaande scriptjes (zie URL's) wel uit één subdir de files. Maar bij de volgende loopt ie compleet vast. En ik met mijn eigen brouwsels ook...

Voor de duidelijkheid even een indicatie van hoe zo'n directory eruit ziet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- Folder 1
    - Sub 1
        - Bestand 1
        - Bestand 2
    - Sub 2
        - Bestand 1
    - Sub 3
        - Bestand 1
        - Bestand 2
        - Bestand 3
 Folder 1
    - Sub 1
        - Bestand 1
        - Bestand 2
        - Bestand 3
enz.


Dus heeft iemand enig idee hoe je dit wel fixt? En dus deze fout omzeilt?

Alvast bedankt.

[ Voor 4% gewijzigd door Verwijderd op 17-02-2003 23:25 . Reden: Foute URL's ]


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 12-09 01:23
Is het niet een kwestie van een recursieve functie te schrijven die zichzelf steeds aanroept als hij een dir tegen komt? Zo niet, lees bestand en ga naar volgende positie. Op deze manier kom je steeds dieper, maar ga je weer terug als je al die bestanden hebt.
Het lijkt mij zelf vrij simpel, maar ik kan zo niet iets concreet uitleggen.

[edit]
Die eerste codebase.nl link van jou werkt bij mij perfect. Ik krijg netjes alle dirs, met subdirs en bestanden te zien. Dus wat er precies mis gaat bij jou weet ik niet. Misschien kun je wat posten (wat heb je zelf al gedaan, wat zijn de foutmeldingen, etc.)

[ Voor 29% gewijzigd door Postman op 18-02-2003 00:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik weet geen oplossing maar je moet ook niet vergeten dat een subdir ook nog eens een dir kan bevatten...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
FlamerX schreef op 17 februari 2003 @ 23:50:
...
Die eerste codebase.nl link van jou werkt bij mij perfect. Ik krijg netjes alle dirs, met subdirs en bestanden te zien. Dus wat er precies mis gaat bij jou weet ik niet. Misschien kun je wat posten (wat heb je zelf al gedaan, wat zijn de foutmeldingen, etc.)
Ik zal je straks even laten zien wat er fout gaat...

Edit - Dat is nou ook maf. Net dacht ik toch echt geen fout te hebben gemaakt in de file (slechts newdir('.') veranderd in $_SERVER['DOCUMENT_ROOT'], al zou dat weinig uitmaken) en nu heb ik alleen even de directory opnieuw aangemaakt (dirs/sub) en hij werkt wel :S

Misschien komt het doordat ik de directory's aan had gemaakt met een "FileManager" in de admin van mijn domein. En nu heb ik het gedaan via de FTP. Ik zal eens gaan kijken wat nu de echte oorzaak is...

Echter was de foutmelding in de trend van: "Can't read ... dir; doesn't exists"
Verwijderd schreef op 17 februari 2003 @ 23:57:
Ik weet geen oplossing maar je moet ook niet vergeten dat een subdir ook nog eens een dir kan bevatten...
Of course...

[ Voor 31% gewijzigd door Verwijderd op 18-02-2003 14:44 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Even toch een nieuwe reply om het allemaal een beetje overzichterlijk te houden.

Het probleem was uiteindelijk de volgende foutmelding:

Warning: ChDir: Permission denied (errno 13) in /home/httpd/vhosts/phpdesk.nl/httpdocs/dir.php on line 12

Deze had ik dus gister over het hoofd gezien, en daarom liep het bij dit script, bij de andere en bij mijn eigen scriptje steeds fout: de FileManager in de admin van mijn domein geeft kennelijk niet de juiste rechten aan een dir bij het aanmaken. Waardoor ChDir() niet kon worden gebruikt. En wat dus ook de kern van de daaropvolgende foutmeldingen (loop) was.

Afijn, het is opgelost :)

Acties:
  • 0 Henk 'm!

  • smaij
  • Registratie: November 2000
  • Laatst online: 10:44
Verwijderd schreef op 18 February 2003 @ 14:48:
Even toch een nieuwe reply om het allemaal een beetje overzichterlijk te houden.

Het probleem was uiteindelijk de volgende foutmelding:

Warning: ChDir: Permission denied (errno 13) in /home/httpd/vhosts/phpdesk.nl/httpdocs/dir.php on line 12

Deze had ik dus gister over het hoofd gezien, en daarom liep het bij dit script, bij de andere en bij mijn eigen scriptje steeds fout: de FileManager in de admin van mijn domein geeft kennelijk niet de juiste rechten aan een dir bij het aanmaken. Waardoor ChDir() niet kon worden gebruikt. En wat dus ook de kern van de daaropvolgende foutmeldingen (loop) was.

Afijn, het is opgelost :)
Betekend dit dat de directories in de directories en daaropvolgend.. ook gelezen/ingepakt worden? Of moet je elke directorie zelf toevoegen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De complete (start)directory wordt uitgelezen en aan je gepresenteerd :)

Dus als je de root opgeeft ('.') dan krijg je alles wat qua bestanden en mappen in je root staat.

[ Voor 46% gewijzigd door Verwijderd op 18-02-2003 15:13 ]


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 12-09 01:23
Markuz, zou je de source eventueel nog willen delen met ons? Of anders op codebase.nl, hotscripts.com posten? Je maakt immers ook gebruik van iemand anders zijn code, dus het is wel zo netjes om dan iets terug te geven ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Uhm, je bedoeld de code waarmee ik ervoor gezorgd heb dat ik complete folders in een zip file kan stoppen?

Sure, wist alleen niet dat er zo direct interesse naar was :)

Zal even wat uppen, moment...

Edit - Check hier de source!

Let wel op; het is niet veel getest. Er kunnen nog zat fouten inzitten. En de code is vrij slordig geschreven. Want ik heb het slechts grof aangepast en dus nog niet netjes herschreven...

[ Voor 77% gewijzigd door Verwijderd op 18-02-2003 18:38 ]

Pagina: 1