2014-07-19 58 views
1

我想压缩用户选择的文件,但出于某种原因我得到此错误。类ZipArchive的对象无法转换为字符串

我使用laravel 4.2

这里就是误差从发起的代码部分。

$zip_name = 'dris-sweet-16-pictures.zip'; 
$zip = new ZipArchive(); 
$zip->open($zip_name, ZipArchive::CREATE); 
foreach ($lg_img as $img) { 
    $zip->addFile(public_path().'/'.$img);      
} 

Response::download($zip, $zip_name, array(
    'content-type'   => 'application/zip', 
    'Content-disposition:' => 'attachment; filename=filename.zip', 
    'Content-Length:'  => filesize($zip_name) 
)); 

$zip->close(); 

回答

0

如下所述:http://laravel.com/docs/responses#special-responses, 此方法的参数是按以下顺序:

Response::download($pathToFile, $name, $headers); 

在你的代码,您传递$拉链,你的ZipArchive的文件路径但该方法期望在这里有一个字符串,所以你的文件在磁盘上的路径。

干杯。

+0

ZipArchicve创建的邮件在哪里? – user3813559

+0

在您的示例中由ZipArchive创建的zip为$ zip_name,您通过以下代码创建它: $ zip-> open($ zip_name,ZipArchive :: CREATE); 因此,他通常在您的脚本运行的文件夹上(通过您的示例,我会说归档文件位于您的应用程序的根目录)。 http://php.net/manual/fr/ziparchive.open.php –