Guten Tag liebe HaBo-User,
und zwar möchte ich mit PHP ein ZIP Archiv erstellen,... In das Archiv soll ein Verzeichnis (Inklusive Unterverzeichnisse),...
In den Verzeichnissen liegen nur PDF-Dateien, die allerdings Umlaute enthalten können. Meine bisherige Lösung sieht nach viel googlen momentan folgendermaßen aus:
Unter Windows werden die Umlaute nach dem entpacken korrekt angezeigt, bei Linux jedoch nicht,...
Ich erstelle das Zip auf einem Ubuntu 14.04 Server unter Apache.
Ich hoffe mir kann jemand helfen, oder eine alternative empfehlen - ich komme einfach nicht weiter.
MfG
Selig
und zwar möchte ich mit PHP ein ZIP Archiv erstellen,... In das Archiv soll ein Verzeichnis (Inklusive Unterverzeichnisse),...
In den Verzeichnissen liegen nur PDF-Dateien, die allerdings Umlaute enthalten können. Meine bisherige Lösung sieht nach viel googlen momentan folgendermaßen aus:
PHP:
//Funktion
function zipDir(&$zip, $dir, $base = '')
{
if (!file_exists($dir));
$arFiles = scandir($dir);
foreach ($arFiles as $file)
{
if (in_array($file, array('.', '..'))) continue;
$x = iconv("UTF-8", "CP437", $file);
if (is_file($dir.'/'.$file))
{
$zip->addFile($dir.'/'.$file, $base.$x);
}
else if (is_dir($dir.'/'.$file))
{
$zip->addEmptyDir($base.$x);
zipDir($zip, $dir.'/'.$file, $base.$x.'/');
}
}
}
//Aufruf
$tmpzip = tempnam("/tmp", "datei");
$id = "1";
$jahr = "2014";
// Objekt erstellen und schauen, ob der Server zippen kann
$zip = new ZipArchive();
if ($zip->open($tmpzip, ZIPARCHIVE::CREATE) !== TRUE) {
die ("Archiv konnte nicht erstellt werden");
}
// Verzeichnisse
zipDir($zip, './speicher/'.$id.'/'.$jahr.'/');
$zip->close();
header("Cache-Control: private");
header('Content-Type: application/zip; charset=CP437');
header('Content-Disposition: filename='.$jahr.'.zip');
header("Pragma: public");
session_cache_limiter('nocache');
die(file_get_contents($tmpzip));
Unter Windows werden die Umlaute nach dem entpacken korrekt angezeigt, bei Linux jedoch nicht,...
Ich erstelle das Zip auf einem Ubuntu 14.04 Server unter Apache.
Ich hoffe mir kann jemand helfen, oder eine alternative empfehlen - ich komme einfach nicht weiter.
MfG
Selig