Php 尝试创建zip文件以下载多张图片
在过去的一个小时里,我一直在玩下面的脚本,不知道到底出了什么问题 想法是什么:- 基本上,我有一个保存图像数据的数据库,我调用该数据(图像文件名),试图将其放入数组中,然后传递给zip创建脚本 以下是我所拥有的:- 我还尝试将结果直接解析到数组中,但也失败了:-Php 尝试创建zip文件以下载多张图片,php,Php,在过去的一个小时里,我一直在玩下面的脚本,不知道到底出了什么问题 想法是什么:- 基本上,我有一个保存图像数据的数据库,我调用该数据(图像文件名),试图将其放入数组中,然后传递给zip创建脚本 以下是我所拥有的:- 我还尝试将结果直接解析到数组中,但也失败了:- $query_ImageCollect = ("SELECT image_url FROM image_data WHERE image_dealerid='$dealer_id' AND imagename LIKE '$imageN
$query_ImageCollect = ("SELECT image_url FROM image_data WHERE image_dealerid='$dealer_id' AND imagename LIKE '$imageName'") or die(mysql_error());
while( $row = mysql_fetch_assoc( $query_ImageCollect )){
$groupFiles[] = $row;
}
$zipName="Pictures.zip";
$zip = new ZipArchive;
$zip->open($zipName, ZipArchive::CREATE);
foreach ($groupFilesas $file) {
$zip->addFile($file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipName);
header('Content-Length: ' . filesize($zipName));
readfile($zipName);
如有任何帮助/建议,将不胜感激。
提前感谢:)您实际上没有向zip添加任何内容,因为您没有正确处理查询结果。您正试图将$row数组作为文件名传递给
$zip->addFile()
您也不需要从查询结果创建临时数组,然后将其作为第一个查询结果处理循环的一部分进行处理
另外,在第二次尝试中,您没有发出执行查询,因此将没有要处理的结果
试试这个:-
$query_ImageCollect = "SELECT image_url
FROM image_data
WHERE image_dealerid='$dealer_id'
AND imagename LIKE '$imageName'";
$ImageCollect = mysql_query($query_ImageCollect, $vwconn) or die(mysql_error());
$zipName="Pictures.zip";
$zip = new ZipArchive;
$zip->open($zipName, ZipArchive::CREATE);
while( $row = mysql_fetch_assoc( $ImageCollect)) {
// make sure you dont need to add anything to the
// $row['image_url'] to make a correctly pathed filename
$zip->addFile($row['image_url']);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipName);
header('Content-Length: ' . filesize($zipName));
readfile($zipName);
如果您在任何地方都没有收到错误报告,那么您的配置就出现了严重错误。php错误文件应该是HUGH
另外,请不要使用mysql数据库扩展,它已经被弃用多年了,特别是如果这是一个新的开发。移动到mysqli\uu
或PDO
你说的“失败”是什么意思?具体错误在哪里?语法:
foreach($groupFilesas$file){
fix toforeach($groupFilesas$file){
在两次尝试中,$groupFiles
和单词as
之间的空格在开发过程中,请在php.ini
中将此参数修改为display\u errors=On
。或者,如果您愚蠢到在live server上开发,ini\u set,则至少将其添加为所有代码的第一行('display_errors','1')
@Kyle-感谢您的快速回复。错误日志或错误报告中没有显示任何内容,zip文件会按原样加载到浏览器中。尽管zip文件已损坏。最好还是在您正在开发的错误报告(E|error | E|u WARNING | E|u PARSE | E| E|u NOTICE)代码中使用这两行代码;ini|set('display_errors','1')
感谢您的解释,这绝对有助于清理我的编码!我为您推荐了一位Smokey-他们有PDO。
$query_ImageCollect = "SELECT image_url
FROM image_data
WHERE image_dealerid='$dealer_id'
AND imagename LIKE '$imageName'";
$ImageCollect = mysql_query($query_ImageCollect, $vwconn) or die(mysql_error());
$zipName="Pictures.zip";
$zip = new ZipArchive;
$zip->open($zipName, ZipArchive::CREATE);
while( $row = mysql_fetch_assoc( $ImageCollect)) {
// make sure you dont need to add anything to the
// $row['image_url'] to make a correctly pathed filename
$zip->addFile($row['image_url']);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipName);
header('Content-Length: ' . filesize($zipName));
readfile($zipName);