2014-07-19 3 views
1

J'essaie de compresser les fichiers sélectionnés par l'utilisateur mais pour une raison quelconque, je reçois cette erreur.Objet de la classe ZipArchive n'a pas pu être converti en chaîne

J'utilise Laravel 4.2

Voici la partie du code où l'erreur est originaire de.

$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(); 

Répondre

0

Comme décrit ici: http://laravel.com/docs/responses#special-responses, les arguments en faveur de cette méthode sont dans l'ordre suivant:

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

Dans votre code, vous passez $ zip, votre ZipArchive comme le chemin du fichier mais la méthode attend ici une chaîne, donc le chemin vers votre fichier sur le disque.

Cheers.

+0

Où le zip est-il créé par ZipArchicve? – user3813559

+0

Le zip créé par ZipArchive dans votre exemple est $ zip_name, vous le créez avec le code suivant: $ zip-> open ($ zip_name, ZipArchive :: CREATE); Donc, il est normalement, sur le dossier où votre script est en cours d'exécution (par votre exemple, je dirais que l'archive est à la racine de votre application). http://php.net/manual/fr/ziparchive.open.php –

Questions connexes