Php Symfony 2:在一个Zip文件中下载多个图像文件
我想在一个zip中下载多个文件,但它不起作用:下载的zip文件夹仍然是空的,类似于opt/lampp/htdocs/MYPROJECT/。。。我想要哪一个简单的像/filename.zip 我的控制器,我只是从数据库中获取所有文件名,并将它们与实际保存它们的目录名连接起来:Php Symfony 2:在一个Zip文件中下载多个图像文件,php,symfony,request,zip,Php,Symfony,Request,Zip,我想在一个zip中下载多个文件,但它不起作用:下载的zip文件夹仍然是空的,类似于opt/lampp/htdocs/MYPROJECT/。。。我想要哪一个简单的像/filename.zip 我的控制器,我只是从数据库中获取所有文件名,并将它们与实际保存它们的目录名连接起来: $response = new Response(); // Get the entity manager $em = $this->getDoctrine()->getManager();
$response = new Response();
// Get the entity manager
$em = $this->getDoctrine()->getManager();
//Collect all the result from the database and zip all the files related
$files = $em->getRepository('IballotCmsBundle:Result')->findAll();
$directory = __DIR__.'/../../../../web/uploads/pinkSheet';
//$directory = __DIR__.'/../temp/de.jpg';
$filename = 'all.zip';
$zip = new ZipArchive;
$zip->open($filename, ZipArchive::CREATE);
foreach ($files as $file) {
$zip->addFile($directory.'/'.$file->getImage());
}
$zip->close();
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', mime_content_type($filename));
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '"');
$response->headers->set('Content-length', filesize($filename));
// Send headers before outputting anything
$response->sendHeaders();
$response->setContent(readfile($filename));
return $response;
我认为这与这一行代码有关:
$filename = 'all.zip';
$zip = new ZipArchive;
$zip->open($filename, ZipArchive::CREATE);
您正在尝试创建名为all.zip的zip文件,但尚未指定实际路径<代码>$filename
应该是这样的:
$filename = '/absolute/path/to/all.zip'
关于zip文件的结构,您需要阅读,其中有一个很好的示例:
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
$zip->addFile('/path/to/index.txt', 'newname.txt');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
这将把
/path/to/index.txt
文件添加到test.zip
中,文件名为newname.txt
,而不是/path/to/index.txt
。您可以使用第二个参数控制目录(查看文档中的注释了解更多信息)what say error.log,然后尝试通过$res=$zip->open($filename,ZipArchive::CREATE)捕获错误;var_dump($res);死亡代码>以上代码返回trueOk。您检查了php错误日志吗?对不起:日志文件在哪里?因为在您使用apache2服务器之前,我从未尝试过检查它?我尝试过,但不起作用:$zip->addFile($directory.'/'.$item->getImage(),'newname.txt');你能澄清一下你的zip文件是否被创建了,如果是的话,它是否存储在正确的路径中?文件没有被创建,尽管zip文件被创建了,我的意思是:zip文件无效