HTML download Ordner?
Wie kann ich für html einen Downloadlink für einen normalen Ordner erstellen?
LG Daniel :)
Hier die lösung falls die jemand sucht ;D
<?php
// Create ZIP file
if(isset($_GET['file']) && isset($_GET['path'])){
echo 'success';
$zip = new ZipArchive();
$filename = $_GET['file'];
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$dir = $_GET['path'];
// Create zip
createZip($dir, $zip);
$zip->close();
if (file_exists($filename)) {
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Content-Length: ' . filesize($filename));
flush();
readfile($filename);
// delete file
unlink($filename);
}
}
function CreateZip($path, $zip)
{
$dir_handle = @opendir($path);
$items = array();
while(false !== ($item = readdir($dir_handle)))
{
$dir = $path . '/' . $item;
if($item == '.' || $item == '..')
{
continue;
}
if(is_dir($dir))
{
CreateZip($dir, $zip);
}
else
{
$zip->addFile($dir);
}
}
}
?>
Meinst Du damit, dass Du willst, dass ein Link zum Download eines Ordners führt?
Genau
2 Antworten
Du kannst die ZIP Extension nutzen, um auf Anfrage alle Dateien des jeweiligen Verzeichnisses in eine ZIP-Datei zu packen.
Sobald die ZIP-Datei angelegt wurde, kannst du sie als Response an den Client zurückschicken. Ungefähr so:
$path = '/path/to/your/file.zip';
header('Content-Type: application/zip');
header("Content-Disposition: attachment; filename={basename($path)}");
header("Content-Length: {filesize($path)}");
readfile($path);
Gar nicht. Ein Verzeichnis kann man nicht herunterladen. Du kannst einzeln auf die jeweils darin liegenden Dateien verlinken, oder Du bündelst diese und bietest sie zB als ZIP-Archiv gepackt als Download an.
In HTML gar nicht, aber unter Windows kannst Du die Dateien bzw. den Ordner auswählen und im Rechts-Klick-Menu "komprimieren" oder so ähnlich anklicken (unter macOS ginge das auch genau so)
In HTML gar nicht. Jedenfalls nicht ohne erheblichen Mehraufwand durch Programmierung entsprechender Skripte mit anderen Sprachen.
Sinnigerweise packt man die Dateien am entsprechenden Gerät, ehe man das so erstellte ZIP-Archiv hochlädt. Windows, im Grunde alle Linux-Distributionen und MacOS haben entsprechende Werkzeuge bereits in ihren Kontextmenüs verbaut, wenn man mehrere Dateien anwählt. Die Befehle dafür lauten grob "An ZIP-Archiv senden" "als ZIP-Archiv komprimieren" oder so Ähnlich. Für Android und iOS müsste man eine geeignete App nachinstallieren.
Weißt du auch wie ich mehrere Dateien zu einem Zip-Archive komprimieren kann in HTML? LG