dit geeft nu iets van tienduizende bestande weer o_o
maar ik zal kijken of ik en zip functie kan maken die gebruik maakt van die array, hartelijk dank :D
maar ik ben bang dat ik weer de zelfde foutmelding krijg door de addFile functie :I
?
Onbekende gebruiker
06-08-2012 16:10
@Ricardo Vermeltfoort
Ik heb ooit eens zo'n script gemaakt om een site te backuppen en dan op een andere server te zetten / te mailen. Eerst had ik hetzelfde probleem, maar na lang zoeken kwam ik erachter dat u om de 256 à 512 bestanden de functie moet sluiten en opnieuw openen en normaal zou het dan wel moeten werken.
Heb een nieuwe versie gemaakt die gebruikt maakt van de showfiles functie door SanThe (bedankt daarvoor, hier werkte het dus wel mee :D)
hier de code voor iedereen die het handig zal vinden :P
<?php
if (file_exists('zipall.zip')) {
if (!isset($_REQUEST['deleteandcontinue']) ||
!$_REQUEST['deleteandcontinue'])
{
print 'File already exists, <a href="zipall.php?deleteandcontinue=1">delete and continue</a>?';
exit;
}
unlink('zipall.zip');
}
$dirinhoud = showfiles('./');
/* be prepared for a big zip file :3 */
if (!zipToFile($dirinhoud, 'zipall.zip'))
print 'failed';
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="zipall.zip"');
readfile('zipall.zip');
/* showfiles() door SanThe */
function showfiles($map = "./", $return = array())
{
if(@$dir = opendir($map))
{
while (false !== ($file = readdir($dir)))
{
if ($file != "." && $file != "..")
{
if(is_dir($map . $file))
$return = showfiles($map . $file . "/", $return);
else
$return[] = $map . $file;
}
}
}
@closedir($dir);
return $return;
}
function zipToFile($in, $out)
{
$zip = new ZipArchive;
if ($zip->open($out, ZipArchive::CREATE) !== TRUE)
return false;
foreach($in as $file)
$zip->addFile($file, substr($file, 2));
$zip->close();
return true;
}
?>