Help beste forum leden:

Ik heb even een script gemaakt die in mijn systeem van productfoto's een zip maakt zodra er op een andere pagina op download word gedrukt.
Hieronder is het script wat dan word opgeroepen. Nu krijg ik de gehele linkstructuur in mijn zip file zoals:

Uploads/merk/type/serial/img.jpg


Echter zou ik graag alleen direct de foto's in de zip willen hebben,
Ik heb op internet meerdere opties gevonden die niet werken waaronder:

foreach ($files as $name => $file) {
$new_filename = substr($name,strrpos($name,'/') + 1);
$zip->addFile($file, $new_filename);
}

Dit is mijn script zoals hij gewoon werkt met mappenstructuur:


<?php
$dir = $_GET['url']; //folder path
$archive = $_GET['zipname'].'.zip';

$zip = new ZipArchive;
$zip->open($archive, ZipArchive::CREATE);

$files = scandir($dir);
unset($files[0], $files[1]);

foreach ($files as $file) {
$zip->addFile($dir.'/'.$file);
}
$zip->close();

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename="'.$archive.'"');
header('Content-Length: '.filesize($archive));
readfile($archive);
unlink($archive);
?>
Gokje: verander regel 12 naar:

<?php
$zip->addFile($file);
?>
Helaas werkt dat niet, dan krijg ik archive is damaged.

Frank Nietbelangrijk op 15/08/2016 22:05:37

Gokje: verander regel 12 naar:

<?php
$zip->addFile($file);
?>



Ander gokje: vlak voordat je begint met toevoegen van bestanden een chdir($dir); gebruiken. In jouw geval vlak voor de foreach(). Combineer dat met de tip van Frank, zou moeten werken.
Ik gok dan ook maar eens ...

<?php
foreach ($files as $file) {
$zip->addFile($dir.'/'.$file, '/'.$file);
}
?>
Even in de handleiding geloerd en inderdaad! Voorbeeld van Ozzie werkt ongetwijfeld het beste.
Super bedankt mensen! de Gok van Ozzie werkt prima! Ik heb de laatste / weggehaald zodat je geen bestanden krijgt met /image.jpg in de zip.

Bedankt allen voor het meedenken, mijn dag is weer goed.
Die laatste slash kan inderdaad gewoon weg. Goed om te horen dat het gelukt is. Succes ermee.

Reageren