php zip архив — загрузка нескольких файлов с использованием 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');
}
?>

0

Решение

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]