Hướng dẫn php download multiple files as zip - php tải xuống nhiều tệp dưới dạng zip

Làm cách nào để tải xuống nhiều tệp dưới dạng tệp zip bằng PHP?

Hướng dẫn php download multiple files as zip - php tải xuống nhiều tệp dưới dạng zip

Đã hỏi ngày 18 tháng 11 năm 2009 lúc 8:06Nov 18, 2009 at 8:06

1

Bạn có thể sử dụng lớp ZipArchive để tạo tệp zip và truyền nó cho máy khách. Cái gì đó như:

$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();

và để truyền phát nó:

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

Dòng thứ hai buộc trình duyệt phải trình bày một hộp tải xuống cho người dùng và nhắc tên filename.zip. Dòng thứ ba là tùy chọn nhưng một số trình duyệt (chủ yếu cũ hơn) có vấn đề trong một số trường hợp nhất định mà không có kích thước nội dung được chỉ định.

Đã trả lời ngày 18 tháng 11 năm 2009 lúc 8:08Nov 18, 2009 at 8:08

cletuscletuscletus

Huy hiệu vàng 605K163163 gold badges903 silver badges940 bronze badges

13

Đây là một ví dụ hoạt động của việc tạo ZIP trong PHP:

$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();

Ren

1.1135 huy hiệu vàng15 Huy hiệu bạc24 Huy hiệu đồng5 gold badges15 silver badges24 bronze badges

Đã trả lời ngày 10 tháng 5 năm 2013 lúc 10:58May 10, 2013 at 10:58

Sun yêu tình yêuSun Love

7245 Huy hiệu bạc9 Huy hiệu Đồng5 silver badges9 bronze badges

1

Bạn đã sẵn sàng để làm với Php Zip Lib và cũng có thể sử dụng Zend Zip Lib,

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/

Và cũng có Php Pear Lib cho http://www.php.net/manual/en/class.ziparchive.php này

Đã trả lời ngày 6 tháng 9 năm 2013 lúc 13:50Sep 6, 2013 at 13:50

dev.meghrajdev.meghrajdev.meghraj

7.8605 Huy hiệu vàng36 Huy hiệu bạc73 Huy hiệu đồng5 gold badges36 silver badges73 bronze badges

Hướng dẫn php download multiple files as zip - php tải xuống nhiều tệp dưới dạng zip

Tải xuống demo

Hôm nay tôi đang chia sẻ cách tạo tệp zip gồm nhiều tệp bằng PHP và tải xuống tệp zip đó khi nhấp. Với mục đích này, tôi sẽ cần một thư mục nơi tất cả các tệp có sẵn có thể được chọn và tải xuống. Tôi cũng sẽ tạo một trang PHP duy nhất chứa các tập lệnh sau.

HTML

Tạo một trang PHP đơn giản và sao chép mẫu dưới đây.





jQuery

Thêm tập lệnh sau trong trang chân trang của trang web. Don Tiết quên thêm thư viện jQuery trước tập lệnh này.

$('#submit').prop("disabled", true);
$("#checkAll").change(function () {
      $("input:checkbox").prop('checked', $(this).prop("checked"));
	  $('#submit').prop("disabled", false);
	  if ($('.chk').filter(':checked').length < 1){
			$('#submit').attr('disabled',true);}
});

$('input:checkbox').click(function() {
        if ($(this).is(':checked')) {
			$('#submit').prop("disabled", false);
        } else {
		if ($('.chk').filter(':checked').length < 1){
			$('#submit').attr('disabled',true);}
		}
});

Như bạn có thể thấy ở trên rằng khi bạn nhấp vào chọn tất cả, tất cả các hộp kiểm đều được kiểm tra hoặc bỏ chọn. Bạn có thể xem hướng dẫn của tôi về & nbsp; cách chọn bỏ chọn tất cả các hộp kiểm bằng jQuery.

PHP

Sao chép dán tập lệnh PHP dưới đây vào đầu trang web. Khi ai đó gửi biểu mẫu trước, chúng tôi đang kiểm tra xem mảng tệp có được đặt hay không, thì chúng tôi đang tạo tệp zip và tải xuống tệp đó.files array is set or not, then we are creating zip file and downloading that file.

 0)
{ 
// Checking files are selected
$zip = new ZipArchive(); // Load zip library 
$zip_name = time().".zip"; // Zip name
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)
{ 
 // Opening zip file to load files
$error .= "* Sorry ZIP creation failed at this time";
}
foreach($post['files'] as $file)
{ 
$zip->addFile($file_folder.$file); // Adding files into zip
}
$zip->close();
if(file_exists($zip_name))
{
// push to download the zip
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
readfile($zip_name);
// remove zip file is exists in temp path
unlink($zip_name);
}

}
else
$error .= "* Please select file to zip ";
}
else
$error .= "* You dont have ZIP extension";
}
}
?>

Tải xuống demo

Hôm nay tôi đang chia sẻ cách tạo tệp zip gồm nhiều tệp bằng PHP và tải xuống tệp zip đó khi nhấp. Với mục đích này, tôi sẽ cần một thư mục nơi tất cả các tệp có sẵn có thể được chọn và tải xuống. Tôi cũng sẽ tạo một trang PHP duy nhất chứa các tập lệnh sau.

HTML

Làm cách nào để tải xuống nhiều tệp zip trong PHP?

zip '; $ zip = ziparchive mới; $ zip-> mở ($ zipname, ziparchive :: created); foreach ($ files as $ file) {$ zip-> addFile ($ file); } $ zip-> đóng ();$zip = new ZipArchive; $zip->open($zipname, ZipArchive::CREATE); foreach ($files as $file) { $zip->addFile($file); } $zip->close();

Làm cách nào để tải xuống nhiều tệp PDF trong PHP?

Bạn cần sử dụng Yêu cầu_once ở đầu tập lệnh của mình, không sử dụng bao gồm bên trong hàm.// yêu cầu điều này ở đầu tệp của bạn yêu cầu_once ('pdf. Php');Vấn đề là mỗi lần bạn gọi hàm, nó bao gồm lớp PDF một lần nữa và nó chỉ có thể được khai báo một lần.use require_once at the top of your script, don't use include inside the function. // Require this at the top of your file require_once('pdf. php'); The issue is each time you call the function, it includes the PDF class again and it can only be declared once.

Làm thế nào để tạo một tệp zip trong PHP?

Tạo tệp zip trong php sử dụng lớp ziparchiver để lưu trữ tất cả các tệp và thư mục phụ của thư mục đã cho và tạo tệp zip từ tập lệnh trong PHP.Bao gồm và khởi tạo lớp ziparchive.Chỉ định đường dẫn của thư mục mà bạn muốn lưu trữ dưới dạng zip.Chỉ định đường dẫn để lưu tệp zip trên máy chủ.Use ZipArchiver class to archive all files and sub-directories of the given folder and create ZIP file from the script in PHP. Include and initialize the ZipArchive class. Specify the path of the directory which you want to archive as a ZIP. Specify the path to save the ZIP file on the server.

Làm cách nào để tải xuống mã PHP?

PHP cho phép bạn tải xuống tệp dễ dàng bằng hàm readfile () tích hợp.Hàm readfile () đọc một tệp và ghi nó vào bộ đệm đầu ra ...
Làm cách nào để tải xuống nhiều tệp zip trong PHP?
Tiêu đề ('Loại nội dung: Ứng dụng/Dòng octet') ;.
Tiêu đề ("Mã hóa chuyển đổi nội dung: UTF-8") ;.