2016-08-24 126 views
0

我想通過我的服務器開始下載一個zip文件。爲什麼我的.zip文件被下載爲空?

這種類型的zip文件包含一些生成的pdf。

問題是,袋和傾倒它,但標記我打開這個損壞或有一個錯誤,當我提取告訴我是空的。

在這裏,我做的整個過程?

descargar.php

<?php 

$zip = new ZipArchive(); 

$filename = 'walkingdead.zip'; 


if($zip->open($filename,ZIPARCHIVE::CREATE)===true) { 
// Get real path for our folder 
$rootPath = realpath('../walkingdead'); 


$zip->open('walking.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE); 

// Create recursive directory iterator 
/** @var SplFileInfo[] $files */ 
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath), 
    RecursiveIteratorIterator::LEAVES_ONLY 
); 

foreach ($files as $name => $file) 
{ 
    // Skip directories (they would be added automatically) 
    if (!$file->isDir()) 
    { 
     // Get real and relative path for current file 
     $filePath = $file->getRealPath(); 
     $relativePath = substr($filePath, strlen($rootPath) + 1); 

     // Add current file to archive 
     $zip->addFile($filePath, $relativePath); 
    } 
} 

//Sin notificaciones, y que el server no comprima 
@ini_set('error_reporting', E_ALL & ~ E_NOTICE); 
@ini_set('zlib.output_compression', 'Off'); 
    //Encabezados para archivos .zip 
header('Content-Type: application/zip'); 
header('Content-Transfer-Encoding: Binary'); 
    //El nombre predeterminado que verá el cliente 
header('Content-disposition: attachment; filename="' . basename($filename) . '"'); 
    //Que no haya límite en la ejecución del script 
@set_time_limit(0); 

    //Imprime el contenido del archivo 
readfile($filename); 


// Zip archive will be created only after closing object 
$zip->close(); 
} 
+0

基本調試:'readfile($ files);'當你傳入你的directoryiterator對象時,你認爲readfile()會做什麼? –

+0

我想我的.zip文件被下載到我的電腦用戶 – David

+0

那麼你爲什麼要提供一個對象到一個函數,需要一個文件名? –

回答

0

移動$zip->close();代碼來readfile($filename)之前。