Уведомления и предупреждение
Примечания: Использования неопределенной константы WWW_ROOT - предполагаемая 'WWW_ROOT' в C: \ XAMPP \ HTDOCS \ вспыльчивого \ index.php в строке 2
Предупреждение: ScanDir (WWW_ROOT/файлы/PDF/документ, WWW_ROOT/файлы/PDF/документ): в C: \ XAMPP \ HTDOCS \ вспыльчивым \ index.php в строке 9
Предупреждение: ScanDir (WWW_ROOT/файлы/PDF/доку): не удалось открыть директорию: такой файл или каталог в C: \ xampp \ htdocs \ testy \ index.php в строке 9
Предупреждение: scandir(): (errno 2): Нет такого файла или каталога в C: \ XAMPP \ HTDOCS \ вспыльчивого \ index.php в строке 9
Внимание: Недействительный аргумент для Еогеаспа() в C: \ XAMPP \ HTDOCS \ вспыльчивый \ index.php в строке 11
решения
$ реж = $ _SERVER [ 'DOCUMENT_ROOT']. '/ файлы/PDF/DOCUME нт ';
и
Убедитесь, что папка существует:./Файлы/PDF/документ
и я добавил вторые пары - имя файла $ zip-> AddFile ($ реж '/' $ файл. $ файла);
$dir = $_SERVER['DOCUMENT_ROOT'].'/files/pdf/document';
$archive = 'MyDocument.zip';
$zip = new ZipArchive;
$zip->open($archive, ZipArchive::CREATE);
$files = scandir($dir);
unset($files[0], $files[1]);
foreach ($files as $file) {
$zip->addFile($dir.'/'.$file, $file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$archive);
header('Content-Length: '.filesize($archive));
readfile($archive);
unlink($archive);exit;
Вы можете проверить это:
$dir = $_SERVER['DOCUMENT_ROOT'].'/files/pdf/document';
$archive = 'MyDocument.zip';
$zip = new ZipArchive;
$zip->open($archive, ZipArchive::CREATE);
$files = scandir($dir);
unset($files[0], $files[1]);
foreach ($files as $file) {
$zip->addFile($dir.'/'.$file, $file);
}
print_r('<pre>');
print_r($dir);//path
print_r($files);//files
print_r($zip);//object zip
die;
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$archive);
header('Content-Length: '.filesize($archive));
readfile($archive);
unlink($archive);exit;
если папка документ содержит другую подпапку с несколькими файлами, то папка документ не смог ziped - Chandan PATTNAIK
фактически я сделал ошибку
У меня теперь есть решение этого вопроса
/**
* Created by websky
*/
class myZipper extends ZipArchive{
protected $dir;
protected $archive;
protected $pathsArray;
/**
* @param string $dir
* @param string $name
*/
public function __construct($dir,$name){
$this->dir = $dir;
$this->archive = $name;
$this->open($this->archive, myZipper::CREATE);
$this->myScanDir($this->dir);
$this->addZip();
$this->getZip();
}
/**
* @param string $dir
*/
protected function myScanDir($dir){
$files = scandir($dir);
unset($files[0], $files[1]);
foreach ($files as $file) {
if(is_dir($dir.'/'.$file)){
$this->myScanDir($dir.'/'.$file);
}
else {
$this->pathsArray[] = array('oldpath' => $dir.'/'.$file, 'newpath'=> (($this->dir == $dir)? $file : str_replace($this->dir.'/', '', $dir).'/'.$file));
}
}
}
protected function addZip(){
foreach($this->pathsArray as $path){
$this->addFile($path['oldpath'],$path['newpath']);
}
}
public function getZip(){
$this->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$this->archive);
header('Content-Length: '.filesize($this->archive));
readfile($this->archive);
unlink($this->archive);
}
}
$test = new myZipper($_SERVER['DOCUMENT_ROOT'].'/files/pdf/document', 'MyDocument.zip');
См. Здесь. [Создать почтовый файл и загрузить его] [1] [1]: http://stackoverflow.com/a/12226067/3758705 –