में फ़ाइलों को ज़िप करते समय निर्देशिका संरचना को हटाएं PHP में फ़ाइलों को ज़िप करते समय मैंने एक समस्या में भाग लिया है। मेरे पास एक ऐसा फ़ंक्शन है जो फ़ाइलों की एक सरणी ज़िप करता है, ये फ़ाइलें सभी अलग-अलग निर्देशिकाओं में हैं।PHP
function create_zip($files = array(),$destination = '',$overwrite = false,$add_to_db=true) {
print_r($files);
$zip = new ZipArchive();
if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return false;
}
for($i=0;$i < count($files); $i++) {
//echo $files[$i].'<br>';
$zip->addFile($files[$i],$files[$i]);
}
$zip->close();
if(file_exists($destination)) {
// echo("Success");
if($add_to_db == true) { add_file($destination); }
return true;
} else {
//echo("Failed");
return false;
}
}
जब भी कोई प्रयोक्ता और ज़िप अर्क फ़ाइलों की संरचना की तरह है:: समारोह की तरह लग रहा
फ़ोल्डर/folder2/file1.jpg
फ़ोल्डर/file2.jpg
फ़ोल्डर/folder2 /folder3/file3.jpg
मेरा सवाल यह है कि, PHP को सभी फ़ाइलों को ज़िप की जड़ में रखना संभव है और दी गई संरचना को अनदेखा करना संभव है। तो निकाली गई फ़ाइलों दिखाई देगा:
/file1.jpg
/file2.jpg
/file3.jpg
एकमात्र समाधान मैं गया था एक फ़ोल्डर में सभी फ़ाइलों को हिलाने की सोच सकता है और उसके बाद इस फ़ोल्डर को ज़िपित करना, लेकिन यह ओवरकिल की तरह लग रहा था।