2015-06-03 3 views
7

Ich benutze Laravel 4.2 und suche einen Bereich, in dem eine Zip-Datei erstellt wird, die der Benutzer herunterladen kann.Zip erstellen und Herunterladen erzwingen - Laravel

Ich erhalte den Fehler

Die Datei "myzip.zip existiert nicht"

Mein aktueller Code ist:

// Here we choose the folder which will be used. 
      $dirName = public_path() . '/uploads/packs/'.$pack_id; 

      // Choose a name for the archive. 
      $zipFileName = 'myzip.zip'; 

      // Create "MyCoolName.zip" file in public directory of project. 
      $zip = new ZipArchive; 

      if ($zip->open(public_path() . '/' . $zipFileName, ZipArchive::CREATE) === true) 
      { 
       // Copy all the files from the folder and place them in the archive. 
       foreach (glob($dirName . '/*') as $fileName) 
       { 
        $file = basename($fileName); 
        $zip->addFile($fileName, $file); 
       } 

       $zip->close(); 

       $headers = array(
        'Content-Type' => 'application/octet-stream', 
       ); 

       // Download .zip file. 
       return Response::download(public_path() . '/' . $zipFileName, $zipFileName, $headers); 

Kann mir jemand helfen, wie zu Warum bekomme ich den Fehler nicht existiert?

Vielen Dank!

+0

Wenn Sie Ihr Verzeichnis über ftp überprüfen, ist die zip erstellt oder nicht? –

+0

Haben Sie eine Lösung für dieses Problem gefunden? Ich stehe vor demselben Problem. –

Antwort

3

Von Laravel Dokumentation: http://laravel.com/docs/4.2/responses#special-responses

eine Datei herunterladen Antwort erstellen

 
return Response::download($pathToFile); 

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

Vielleicht sollten Sie die zweite

$zipFileName
in Ihrem letzten Zeile Code zu wiederholen vermeiden.

+2

In 5.2 wäre das 'return response() -> download ($ pathToFile, $ name, $ headers);' –

0

Sie können unten eine "Zip von mehreren Dateien erstellen und in PHP herunterladen".

Um eine Zip von mehreren Dateien zu erstellen und herunterladen mit PHP hat es einige unterhalb der Eigenschaften:

  • Es wird eine Zip-Datei mit ZipArchive Bibliothek erstellen.
  • Vor dem Erstellen einer Datei wird überprüft, ob die Datei vorhanden ist oder nicht.
  • Wenn eine Datei existiert, wird sie die Datei entfernen.
  • Wenn die Datei nicht existiert, dann erstellt sie
  • eine Zip-Datei mit mehreren bestanden für sie.
  • Wenn die Zip-Datei bereit ist, wird sie automatisch heruntergeladen.

    //get path of files 
    $path = base_path(); 
    $file_path = $path."/../uploads/advatise/"; 
    //getting data from database 
    $row = $this->getRow($ids); 
    //if data exist 
    if($row) { 
        //multiple images in single attrubute 
        $images=$row->advertise_image; 
        $images=explode(",",$images); 
        //creating zip object 
        $zip = new ZipArchive(); 
        //creating file name 
        $DelFilePath="images".$row->id.".zip"; 
        //if file exists then to delete it 
        if(file_exists($file_path.$DelFilePath)) { 
         unlink ($file_path.$DelFilePath); 
        } 
        //if not exist then to create zip file 
        if ($zip->open($file_path.$DelFilePath, ZIPARCHIVE::CREATE) 
    != TRUE) { 
         die ("Could not open archive"); 
        } 
        //loop on the images/file to add in zip 
        foreach ($images as $key => $image) { 
         $zip->addFile($file_path.$image,$image); 
        } 
        // close and save archive 
        $zip->close(); 
        //opening zip and saving directly on client machine 
        header("Location:".Request::root()."/uploads/advatise/".$DelFilePath); 
    } 
    exit; 
    
Verwandte Themen