login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Gzip + download (Opgelost)

Offline qubus - 26/10/2008 10:13 (laatste wijziging 26/10/2008 15:00)
Avatar van qubusLid Hallo,

Ik ben op zoek naar een script om met een druk op de knop een map te Gzippen en automatisch te downloaden. Ik heb hiervoor een aantal scripts gevonden, en een beetje naar eigen wens aangepast. Nu ben ik zover dat ik een script heb dat inderdaad een zipfile aanmaakt, en download. Alleen de gedownloade file is niet te openen. Weet iemand wat er niet klopt aan dit script?

De class zelf (create_zip.php):
  1. verwijderd


En deze roep ik aan met:

  1. include_once("create_zip.php");
  2.  
  3. $createZip = new createDirZip;
  4. $createZip->addDirectory('./backups/');
  5. $createZip->get_files_from_folder('./image/icons/', './backups/');
  6.  
  7. $fileName = './backups/backup_profiel.zip';
  8. $fd = fopen ($fileName, 'wb');
  9. $out = fwrite ($fd, $createZip->getZippedfile());
  10. fclose ($fd);
  11.  
  12. $createZip->forceDownload($fileName);
  13. @unlink($fileName);


Iemand die me verder kan helpen? ALvast bedankt!
Citaat:
Rens edit:
Gooi die lap code maar op www.plaatscode.be!

12 antwoorden

Gesponsorde links
Offline Rik - 26/10/2008 10:45
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Pak je het nu in als zip of als gzip?

Want als het gzip is en als je het vervolgens laat downloaden als backup_profiel.zip dan is het logisch dat het niet werkt. Het programma waarmee je probeert te openen denkt immers dat het een zip is, maar dat is het niet, dus hij doet het niet!

Noem dat bestand backup_profiel.gz en dan kun je het waarschijnlijk wel openen met winrar.
Offline qubus - 26/10/2008 10:59
Avatar van qubus Lid Da's een goeie... maar helaas werkt het niet.
Winrar geeft aan dat het bestand onbekend is, of beschadigd.
In het voorbeeld dat ik heb gedownload is het trouwens ook een .zip file die ze downloaden. Ik denk dus dat het wel .zip moet zijn.

Is er anders misschien iemand die weet waar ik een vergelijkbaar script kan vinden?
Offline Rik - 26/10/2008 11:17
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je kunt ook de ZipArchive class van de zip extensie van php gebruiken:
http://nl.php.net/manual/en/book.zip.php
Offline qubus - 26/10/2008 11:38
Avatar van qubus Lid Dank je wel, maar ik denk niet dat dat lukt.
Ik kan volgens mij geen extra installaties doen op mijn server.
Ik kan bijvoorbeeld ook niet bij de php.ini voor zover ik weet.
Of kan ik dit toch gebruiken denk je?
Offline Rik - 26/10/2008 11:54
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Waarschijnlijk staat die extensie vanzelf al aan, want het is best standaard om met zips te werken denk ik. Dat kun je controleren met:


Anders kun je nog proberen de extensie te laden met PHP.net: dl, maar veel hosts hebben dat uit staan...
Offline qubus - 26/10/2008 12:34
Avatar van qubus Lid Als ik die code echo, geeft hij aan : Boolean(true)
Ik neem dus aan dat hij geladen is.

Maar als ik van php.net een voorbeeld pak, geeft hij op:
  1. $zip = new ZipArchive();


een error:
Fatal error: Cannot instantiate non-existent class: ziparchive

Wat doe ik nog fout dan?
Offline Rik - 26/10/2008 12:42
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Welke versie van php draait je host? Er staat op php.net:
Citaat:
No version information available, might be only in CVS


Dus misschien werkt dat niet met een andere versie van php. (Ik gebruik de nieuwste 5.2.6) Anders zul je een andere oplossing moeten vinden...
Offline qubus - 26/10/2008 12:59
Avatar van qubus Lid Op versie 4.4.2, vrij oud kennelijk als jij al op 5.2.6.zit.
Offline Rik - 26/10/2008 13:04
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Valt wel mee, de nieuwste van 4 is 4.4.9, dus waarschijnlijk is je host nog niet overgestapt op 5.  

Ik was op phpclasses op kijken voor een andere class, maar ik zie dat die die je nu gebruikt ook daarvandaan komt. Het heeft geen zin om dubbel te zoeken.  
Offline Giant - 26/10/2008 14:53
Avatar van Giant PHP beginner zelf heb ik deze een tijdje gebruikt:

http://www.phpconcept.net/pclzip/index.en.php

hier de bijbehorende uitleg:

http://www.phpconcept.net/pclzip/man/en/index.php
Offline qubus - 26/10/2008 16:14
Avatar van qubus Lid @Giant:
Dat probeer ik nu, en de opgeslagen zip kan ik via de FTP browser gewoon openen en uitpakken.

Ik download hem met de volgende functie, en dat gedownloade bestand is dan weer niet te openen. Dit moet dus in deze functie fout gaan. Iemand nog een idee.

  1. function forceDownload($archiveName) {
  2. $headerInfo = '';
  3.  
  4. // Security checks
  5. if( $archiveName == "" ) {
  6. echo "<tr><td class=\"profiel2\">De download file is niet gespecificeerd!</td></tr>";
  7. exit;
  8. }
  9. elseif ( ! file_exists( $archiveName ) ) {
  10. echo "<tr><td class=\"profiel2\">File niet gevonden!</td></tr>";
  11. exit;
  12. }
  13.  
  14. header("Pragma: public");
  15. header("Expires: 0");
  16. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  17. header("Cache-Control: private",false);
  18. header("Content-Type: application/zip");
  19. header("Content-Disposition: attachment; filename=".basename($archiveName).";" );
  20. header("Content-Transfer-Encoding: binary");
  21. header("Content-Length: ".filesize($archiveName));
  22. readfile("$archiveName");
  23.  
  24. }

Offline Giant - 26/10/2008 16:35
Avatar van Giant PHP beginner waarom een force download?
gewoon naar het zip archief redirecten...
dan download hij hem net zo goed.
(ik geloof dat ik het ook zo als jij met een force download geprobeert heb maar bij mij werkte dat ook niet )
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.206s