2015-11-30 3 views
0

Я пытаюсь случайно загрузить некоторые файлы.Загрузка нескольких файлов с использованием PHP ZipArchive

Извиняюсь, потому что я разместил его раньше, но может кто-то объяснить, что я делаю неправильно подробно?

Я не могу отлаживать его, поскольку я знаю минимальный php.

<?php 
$rootPath = realpath('./uploads'); 
//make zip file 
$zip = new ZipArchive(); 
$zip->open('file.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE); 
$nfiles = glob($rootPath.'*.{aiff}', GLOB_BRACE);  
$files = array_rand($nfiles, 20); 
foreach($files as $file) { 
    $pathtofile = $nfiles[$file]; 
    if (!$file->isDir()) 
    { 
     // Get path for current file 
     $filePath = $pathtofile->getRealPath(); 
     $relativePath = str_replace($rootPath, "", $file); 
     // Add file to zip 
     $zip->addFile($filePath, $relativePath); 
    } 
} 
//-------------------------------------------// 
$zip->close(); 
header('Content-Type: application/zip'); 
header('Content-disposition: attachment; 
filename='.'generatedsounds.zip'); 
header('Content-Length: ' . filesize('file.zip')); 
readfile('file.zip'); 
if(file_exists('file.zip')) 
{ 
    unlink('file.zip'); 
} 
?> 
+2

В чем проблема? Что не работает? какие ошибки вы получаете? – cmorrissey

+0

В чём проблема? Что происходит, когда вы запускаете код? * Выполняется ли *? – Hexaholic

+0

Я сделал что-то вроде этого: 'Download file'. Работал для меня :) –

ответ

0

Вы звоните ->isDir() метод, который не определен, и вы вызываете ->getRealPath(), который также не определен.

И вы получаете все файлы затем подбирая 20 случайные файлы из массива (почему ??)

Пока вы переписывание заголовков, ошибки не будет отображаться в браузере, попробуйте без перезаписи заголовков, что означает он хранится как html-заголовок и тест, пока вы не получите двоичный файл, а затем добавьте заголовки обратно, чтобы у вас был рабочий код.

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

  • Нет связанных вопросов^_^