Hallo zusammen,
ich möchte für einen bestimmten Ordner und seine Unterordner eine Dateiliste erstellen und dann in ein ZIP Archiv packen. Mein bisheriger Ansatz kam aus dem php.net diesen habe ich auch soweit zum Laufen bekommen, das mir eine Dateiliste für das entsprechende Verzeichnis und auch die Unterverzeichnisse erstelle wird. Problematisch ist jedoch die Eliminierung der Ausgabe . für die Unterverzeichnisse.
Ausgabe:
key /meinpfad/test1/.
path test1/.
realpath /meinpfad/test1
/meinpfad/test1/. does not exist. Please contact your administrator or try again later.
Sofern ich die Unterverzeichnisse entferne funktioniert es.
Gruß
Micha
ich möchte für einen bestimmten Ordner und seine Unterordner eine Dateiliste erstellen und dann in ein ZIP Archiv packen. Mein bisheriger Ansatz kam aus dem php.net diesen habe ich auch soweit zum Laufen bekommen, das mir eine Dateiliste für das entsprechende Verzeichnis und auch die Unterverzeichnisse erstelle wird. Problematisch ist jedoch die Eliminierung der Ausgabe . für die Unterverzeichnisse.
PHP-Code:
$password = "meinpasswort";
$sourcefolder = "/meinpfad/";
$dirlist = new RecursiveDirectoryIterator($sourcefolder);
$filelist = new RecursiveIteratorIterator($dirlist);
//how many file can be added before a reopen is forced?
$filelimit = 245;
// Defines the action
$file = tempnam("/meinpfad/_tmp", "zip");
#zip archiv erstellen
$zip = new ZipArchive();
$zippath = "/meinpfad/_zip/";
$zipname = "meinfile" . ".zip";
$zipfile = $zippath . $zipname;
$res = $zip->open("$file", ZipArchive::CREATE);
if ($res === TRUE) {
foreach ($filelist as $key=>$value) {
$path = str_replace($sourcefolder, "", $key);
$realpath=realpath($key);
if (($path != ".") && ($path != "..")) {
#echo "<pre>";echo "key $key<br>";echo "</pre>";
#echo "<pre>";echo "path $path<br>";echo "</pre>";
#echo "<pre>";echo "realpath $realpath<br>";echo "</pre>";
#todo Problem bei existierenden Unterverzeichnissen test1/. eliminieren
if (is_dir($key)) { die($key.' does not exist. Please contact your administrator or try again later.'); }
if (!file_exists($key)) { die($key.' does not exist. Please contact your administrator or try again later.'); }
if (!is_readable($key)) { die($key.' not readable. Please contact your administrator or try again later.'); }
if ($zip->numFiles == $filelimit) {$zip->close(); $zip->open($file) or die ("Error: Could not reopen Zip");}
$zip->addFile(realpath($key), $path) or die ("ERROR: Could not add file: $key </br> numFile:".$zip->numFiles);
$zip->setEncryptionName($path, ZipArchive::EM_AES_256, $password);
}
}
$zip->close();
rename ($file, $zipfile);
$msg = "Link zur ZIP-Datei: <a href=\"https://url/$zipname\">https://url/_zip/$zipname</a> Passwort: ";
$msgblock="success";
$clipboardtext = "$password";
$message = array("msg"=>$msg, "msgblock"=>$msgblock, "clipboardtext" => $clipboardtext);
$message = createMessage ($message);
echo "$message";
} else {
$msg = "Fehler beim Erstellen von https://url/_tmp/$file";
$msgblock="danger";
$clipboardtext = "";
$message = array("msg"=>$msg, "msgblock"=>$msgblock, "clipboardtext" => $clipboardtext);
$message = createMessage ($message);
echo "$message";
exit;
}
key /meinpfad/test1/.
path test1/.
realpath /meinpfad/test1
/meinpfad/test1/. does not exist. Please contact your administrator or try again later.
Sofern ich die Unterverzeichnisse entferne funktioniert es.
Gruß
Micha
Kommentar