Php का उपयोग करके कई फाइलें जिप-फाइल के रूप में डाउनलोड करें


112

मैं php का उपयोग करके एक ज़िप-फ़ाइल के रूप में कई फ़ाइलों को कैसे डाउनलोड कर सकता हूं?


आप xip.lib.php क्लास लिब का उपयोग कर सकते हैं। zip.lib.php उदाहरण के लिए, इस लेख
अब्देल

जवाबों:


212

आप ZipArchiveजिप फाइल बनाने और क्लाइंट को स्ट्रीम करने के लिए क्लास का उपयोग कर सकते हैं । कुछ इस तरह:

$files = array('readme.txt', 'test.html', 'image.gif');
$zipname = 'file.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
  $zip->addFile($file);
}
$zip->close();

और इसे स्ट्रीम करने के लिए:

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);

दूसरी पंक्ति ब्राउज़र को उपयोगकर्ता के लिए एक डाउनलोड बॉक्स पेश करने के लिए मजबूर करती है और नाम filename.zip का संकेत देती है। तीसरी पंक्ति वैकल्पिक है, लेकिन कुछ (मुख्यतः पुराने) ब्राउज़रों के कुछ मामलों में सामग्री आकार निर्दिष्ट किए बिना समस्याएँ हैं।


4
$zip = new ZipArchive;इसके बजाय नहीं होना चाहिए $zip = new ZipFile;?
Matthieu

@ मैथ्यू कोष्ठक आवश्यक नहीं हैं। उदाहरणों में देखें: php.net/manual/en/ziparchive.open.php
लार्स गार्निश ब्रिंक नीलसन

1
चर $ zipfilename का क्या अर्थ है?
पास्कल क्लेन

$ zipfilename को $ zipname पढ़ना चाहिए - यह एक स्ट्रिंग के रूप में निर्मित ज़िप का फ़ाइल नाम है।
क्रिस

1
यह विंडोज़ डिफ़ॉल्ट जिप ओपनर में काम नहीं कर रहा है लेकिन जीत जिपर या 7-ज़िप में काम कर रहा है। मैं जिप फ़ोल्डर में छवि जोड़ने की कोशिश कर रहा हूं और फिर जिप के रूप में डाउनलोड करता हूं
आरएन कुशवाहा

36

यह PHP में ZIP बनाने का एक कार्यशील उदाहरण है:

$zip = new ZipArchive();
$zip_name = time().".zip"; // Zip name
$zip->open($zip_name,  ZipArchive::CREATE);
foreach ($files as $file) {
  echo $path = "uploadpdf/".$file;
  if(file_exists($path)){
  $zip->addFromString(basename($path),  file_get_contents($path));  
  }
  else{
   echo"file does not exist";
  }
}
$zip->close();

2
यह जवाब काम करता है! अंतर addFromString है, addFile बुरी तरह से कोडित है।
एंड्रे कैटिटा


1

आप php zip lib के साथ करने के लिए तैयार हैं, और zend zip lib का उपयोग कर सकते हैं,

<?PHP
// create object
$zip = new ZipArchive();   

// open archive 
if ($zip->open('app-0.09.zip') !== TRUE) {
    die ("Could not open archive");
}

// get number of files in archive
$numFiles = $zip->numFiles;

// iterate over file list
// print details of each file
for ($x=0; $x<$numFiles; $x++) {
    $file = $zip->statIndex($x);
    printf("%s (%d bytes)", $file['name'], $file['size']);
    print "
";    
}

// close archive
$zip->close();
?>

http://devzone.zend.com/985/dynamically-creating-compressed-zip-archives-with-php/

और इसके लिए php नाशपाती lib है http://www.php.net/manual/en/class.ziparchive.php

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.