2014-09-14 3 views
0

АРХИВ Я, имеющий эту функцию в моем имени класса MyMethods:Скачать файлы как прикрепленного с .zip

function zipDownload($file_names,$file_path){ 
    $zip_file_name = date('Y-m-d-h-i-s').'_attachement.zip'; 
    $zip = new ZipArchive(); 
    if($zip->open($zip_file_name, ZIPARCHIVE::CREATE)!==TRUE) { 
     echo("cannot open <".$zip_file_name.">\n");  
     } 
    else{ 
     $filePathAry = explode("/",$file_path); 
     $count = count($filePathAry); 
     $path = ''; 
     for($i=0; $i<=$count - 2; $i++){ 
      $path .= $filePathAry[$i].'/'; 
      } 
     $path = $this->baseDir().$path; 
     foreach($file_names as $files){ 
      $zip->addFile($path,$files); 
      } 
     $zip->close();  
     header("Content-type: application/zip"); 
     header("Content-Disposition: attachment; filename=".$zip_file_name); 
     header("Pragma: no-cache"); 
     header("Expires: 0"); 
     readfile($zip_file_name); 
     exit; 
     } 
    } 

Я называю это следующим кодом из презентационного слоя:

//filled array with names of files: 
loop over files name{ 
     $filesAry[] = $fileName; 
     } 
$method->zipDownload($filesAry,$zipPath); 

по отладке Я получаю эту ссылку как отдельный путь к файлу:

Path : http://localhost/sites/mySite/bdc/uploader/exhibitsFiles/06_08_2014 
File Name: xyb.jpg 

после нажатия на скачивание всех файлов as attachme nt, он создает .zip-файл, но он не открывается как обычный .zip-файл?

Что мне не хватает? пожалуйста, помогите мне в этом. Благодарю.

ответ

1

Используйте путь к файловой системе, а не http-адрес в $zip->addFile(), и убедитесь, что файл, который вы добавляете, существует и доступен для чтения.

Если вы должны захватить файл, который будет добавлен в архив через HTTP, использовать что-то вдоль линий:

$zip->addFromString($files, file_get_contents($path)); 

вместо:

$zip->addFile($path,$files); 
+0

Спасибо, сэр, я изменил код немного отличается от старого, но идея является одним из тех, что вы добавили в решение. Он работает на меня. Я проверил его. благодаря –

Смежные вопросы