Symfony 2:下载zip文件中的多个图像文件
我想下载zip文件中的多个文件,但不起作用:下载的zip文件夹仍然是空的,就像opt/lampp/htdocs/MYPROJECT /。 ..我想这一个简单的像/filename.zipSymfony 2:下载zip文件中的多个图像文件
我的控制,我只是从数据库中获取所有的文件名与目录名,他们在物理保存它们连接起来:
$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文件的结构,你需要阅读其中有一个很好的例子,该docs:
$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
。您可以使用第二个参数来控制目录(查看文档中的注释以获取更多信息)
我尝试它但不起作用:$ zip-> addFile($ directory。'/'。$ item- > getImage(),'newname.txt'); –
您能否澄清一下您的zip文件是否正在创建,如果存在,是否存储在正确的路径中? – tftd
该文件没有创建allthough一个zip文件被创建我的意思是:该zip文件无效 –
what error.log,并尝试通过'$ res = $ zip->捕获错误open($ filename ,ZipArchive :: CREATE); var_dump($ res); die;' – Naumov
上面的代码返回true –
好的。你检查php错误日志? – Naumov