পিএইচপি ব্যবহার করে একাধিক ফাইল জিপ-ফাইল হিসাবে ডাউনলোড করুন


112

আমি কীভাবে পিএইচপি ব্যবহার করে একাধিক ফাইল জিপ-ফাইল হিসাবে ডাউনলোড করতে পারি?


আপনি xip.lib.php ক্লাস lib ব্যবহার করতে পারেন। 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);

দ্বিতীয় লাইনটি ব্রাউজারটিকে ব্যবহারকারীদের কাছে একটি ডাউনলোড বাক্স উপস্থাপন করতে বাধ্য করে এবং ফাইলের নাম.জিপ নামের অনুরোধ করে। তৃতীয় লাইনটি alচ্ছিক তবে নির্দিষ্ট (প্রধানত পুরানো) ব্রাউজারগুলিতে বিষয়বস্তুর আকার নির্দিষ্ট না করে নির্দিষ্ট ক্ষেত্রে সমস্যা রয়েছে।


4
এর $zip = new ZipArchive;পরিবর্তে হওয়া উচিত নয় $zip = new ZipFile;?
ম্যাথিউউ 25'12

পুনঃটুইট করুন উদাহরণগুলিতে দেখুন: php.net/manual/en/ziparchive.open.php
লার্স গিরুপ ব্রিংক নীলসেন

1
পরিবর্তনশীল ip জিপফিলনামটির অর্থ কী?
পাস্কেল ক্লিন

$ জিপফিলনামটি ip জিপ নামটি পড়তে হবে - এটি স্ট্রিং হিসাবে তৈরি জিপটির ফাইলের নাম।
ক্রিস

1
এটি উইন্ডোজ ডিফল্ট জিপ ওপেনারে কাজ করছে না তবে উইন জিপার বা 7-জিপ-এ কাজ করছে। আমি জিপ ফোল্ডারে চিত্র যুক্ত করার চেষ্টা করছি এবং তারপরে জিপ হিসাবে ডাউনলোড করব
আরএন কুশওয়াহা

36

এটি পিএইচপি-তে জিপ তৈরির একটি কার্যকরী উদাহরণ:

$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
এই উত্তর কাজ করে! পার্থক্যটি অ্যাডফ্রমস্ট্রিং, অ্যাডফাইল খারাপভাবে কোডেড।
আন্দ্রে ক্যাটিতা


1

আপনি পিএইচপি জিপ লিবের জন্য প্রস্তুত, এবং জেন্ড জিপ লিবও ব্যবহার করতে পারেন,

<?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/

এবং এই http://www.php.net/manual/en/class.ziparchive.php এর জন্য পিএইচপি পিয়ার লাইবও রয়েছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.