मुझे एक ही समस्या थी लेकिन अंततः कुछ हद तक अस्पष्ट समाधान मिला और इसे यहां साझा करने का फैसला किया।
मैं zip.lib.php
/unzip.lib.php
स्क्रिप्ट्स पर आया जो phpmyadmin
के साथ आते हैं और "पुस्तकालय" निर्देशिका में स्थित हैं।
का उपयोग zip.lib.php
मेरे लिए एक आकर्षण के रूप में काम किया:
require_once(LIBS_DIR . 'zip.lib.php');
...
//create the zip
$zip = new zipfile();
//add files to the zip, passing file contents, not actual files
$zip->addFile($file_content, $file_name);
...
//prepare the proper content type
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=my_archive.zip");
header("Content-Description: Files of an applicant");
//get the zip content and send it back to the browser
echo $zip->file();
यह स्क्रिप्ट एक ज़िप को डाउनलोड करने की अनुमति देता है, वास्तविक फ़ाइलों के रूप में फाइल होने या ज़िप अपने आप में एक फ़ाइल के रूप में बचाने के आवश्यकता के बिना।
यह एक शर्म की बात है कि यह कार्यक्षमता अधिक सामान्य PHP लाइब्रेरी का हिस्सा नहीं है। https://github.com/phpmyadmin/phpmyadmin/blob/RELEASE_4_5_5_1/libraries/zip.lib.php
अद्यतन: आप स्क्रिप्ट सिर्फ zip.lib.php की शुरुआत से के रूप में नहीं तो निम्न चेक निकालने के सुनिश्चित करें
यहाँ phpmyadmin स्रोत से zip.lib.php
फ़ाइल का लिंक है समाप्त हो जाता है:
if (! defined('PHPMYADMIN')) {
exit;
}
अद्यतन: इस कोड के साथ-साथ CodeIgniter परियोजना पर उपलब्ध है: https://github.com/patricksavalle/CodeIgniter/blob/439ac3a87a448ae6c2cbae0890c9f672efcae32d/system/helpers/zip_helper.php
क्या इस संग्रह में केवल एक फ़ाइल या एक से अधिक फ़ाइल हो सकती है? – VolkerK
मेरे विशिष्ट मामले में इसमें एक से अधिक शामिल हैं। इसके अलावा मुझे लगता है कि "मनमाने ढंग से" बड़े अभिलेखागार (आइटम-वार) के लिए एक समाधान अधिक दिलचस्प है (मेरे मामले में, मैं एक टेम्पफाइल का उपयोग कर सकता हूं, लेकिन उन लोगों के बारे में क्या है जो सर्वर का उपयोग करना चाहते हैं जहां उनकी पहुंच फाइल सिस्टम प्रतिबंधित है)? – ralokt