如何在php中归档从数据库下载的多个文件


how to archive download multiple files from database in php

实际上我得到了zip文件。但我不需要表中的总文件数。我想选择userid文件。。。我试着用php和mysql编写下面的代码。

    <?php
    function zipFilesAndDownload($file_names,$archive_file_name,$file_path)
    {
        $zip = new ZipArchive();
        if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) {
            exit("cannot open <$archive_file_name>'n");
        }
        foreach($file_names as $files)
        {
            $zip->addFile($file_path.$files,$files);
            //echo $file_path.$files,$files."<br />";
        }
        $zip->close();
        header("Content-type: application/zip"); 
        header("Content-Disposition: attachment; filename=$archive_file_name"); 
        header("Pragma: no-cache"); 
        header("Expires: 0"); 
        readfile("$archive_file_name");
        exit;
    }
    require_once("config.php");
    $cqurfetch=mysql_query("SELECT * FROM albums where user_id='$user_id' and accept='1'");
    while($row = mysql_fetch_array($cqurfetch))
    {
       $file_names[] = $row['user_album_images'];
    }
       $archive_file_name=time().'.gallery.zip';
       $file_path="/uploads/";
       zipFilesAndDownload($file_names,$archive_file_name,$file_path);
?>

经过多次追踪,我对您的问题有了一个答案。

只有'user_id'文件被压缩并存储在该zip文件夹中。

示例:-

<?php
require_once("config.php");
  $user_id = 49 ;  //Just For your reference
  $accept = 1 ;     //Just For your reference
    $sql = "SELECT * FROM albums where user_id='$user_id' and accept='$accept'";
    $result = $con->query($sql);
    if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
     $array[] = $row["user_album_images"];
     echo "user_album_images: " .$row["user_album_images"]. "<br>"; //This is also just for your reference 
     }
    }
    else{
    echo "fail"; 
    }
 $file= "/uploads/gallery.zip"; //Zip file path
 $zip = new ZipArchive;
 echo "*****zip started.*****'n";   
  if ($zip->open($file, ZipArchive::CREATE) === TRUE) {
    foreach($array as $key => $value)
{  
     $zip->addFile("/".$value);
            }
     $zip->close();
     echo '^^^^^^Zip ended^^^^^^';
  }
?>

我已经在我的本地系统中测试了这段代码,这就像你的要求一样。

希望这能帮助