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; 
+0

what error.log,并尝试通过'$ res = $ zip->捕获错误open($ filename ,ZipArchive :: CREATE); var_dump($ res); die;' – Naumov

+0

上面的代码返回true –

+0

好的。你检查php错误日志? – Naumov

我认为它与这行代码有关:

$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。您可以使用第二个参数来控制目录(查看文档中的注释以获取更多信息)

+0

我尝试它但不起作用:$ zip-> addFile($ directory。'/'。$ item- > getImage(),'newname.txt'); –

+0

您能否澄清一下您的zip文件是否正在创建,如果存在,是否存储在正确的路径中? – tftd

+0

该文件没有创建allthough一个zip文件被创建我的意思是:该zip文件无效 –