在php中强制下载多个blob文件

在php中强制下载多个blob文件,php,mysql,zip,blob,ziparchive,Php,Mysql,Zip,Blob,Ziparchive,我想在我的平台上添加一个方法,允许用户从一个应用程序下载所有文件,这些文件将被压缩。每个应用程序由多个文件组成,这些文件存储在数据库中文件表的单独行中 我尝试了许多选项,但似乎无法将实际文件添加到zip 这是我目前的代码: $sql = "SELECT * FROM files WHERE applications_id = :applications_id"; $stmt = $db->prepare($sql); $stmt->bindParam(':

我想在我的平台上添加一个方法,允许用户从一个应用程序下载所有文件,这些文件将被压缩。每个应用程序由多个文件组成,这些文件存储在数据库中文件表的单独行中

我尝试了许多选项,但似乎无法将实际文件添加到zip

这是我目前的代码:

    $sql = "SELECT * FROM files WHERE applications_id = :applications_id"; 
    $stmt = $db->prepare($sql); 
    $stmt->bindParam(':applications_id', $applications_id, PDO::PARAM_INT); 
    $stmt->execute(); 
    $items = $stmt->fetchAll();

    $zipfilename = 'temp_' . time() . '.zip';
    $zip = new ZipArchive; 
    $zip->open($zipfilename, ZipArchive::CREATE); 
    foreach ($items as $item) { 
     //$zip->addFromString($item['filename'],$item['filename']);
    } 
    $zip->close(); 

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

    exit();

任何帮助都将不胜感激

---我从未在PDO中这样做过,但我认为您需要使用
PARAM_LOB
来处理blob。我似乎没有收到任何错误,只是没有找到添加多个blob的方法。单个的已经可以不用压缩了。看看这个答案(虽然是mysql),你需要一个
while($row=mysql\u fetch\u assoc($ImageCollect)){…}
,所以在你的例子中,这类似于
PDO::fetch\u assoc
。我希望这能有所帮助。问题是我的文件(图像/文本/pdf)本身就在de数据库中。因此,没有文件的实际路径。我想是的,但这就是我所缺少的我从来没有在PDO中这样做过,但我认为您需要使用
PARAM_LOB
来处理blob。我似乎没有收到任何错误,只是没有找到添加多个blob的方法。单个的已经可以不用压缩了。看看这个答案(虽然是mysql),你需要一个
while($row=mysql\u fetch\u assoc($ImageCollect)){…}
,所以在你的例子中,这类似于
PDO::fetch\u assoc
。我希望这能有所帮助。问题是我的文件(图像/文本/pdf)本身就在de数据库中。因此,没有文件的实际路径。我想是的,但这正是我所缺少的。