Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: создание zip архива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kuller
Отправлено: 01 Ноября, 2013 - 14:50:46
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




есть кнопка "скачать" по клику отправляется ajax запрос к файлу path/ajax/download.php

содержимое файла download.php
PHP:
скопировать код в буфер обмена
  1. $stop = "";
  2.  
  3. $docfile = array();
  4.        
  5. $sql = mysql_query("SELECT * FROM scan");
  6. while($row = mysql_fetch_assoc($sql))
  7. {
  8.         // создаем массив
  9.         $text = explode(",", $row['name']);
  10.         for($i=0; $i<count($text); $i++)
  11.         {
  12.                 $vol = $text[$i];
  13.                 array_push($docfile,$vol);
  14.         }
  15. }
  16.  
  17. $file_folder = "../../uploads/document/"; // папка с файлами
  18. if(extension_loaded('zip'))
  19. {
  20.         if(isset($docfile) and count($docfile) > 0)
  21.         {
  22.                 // проверяем выбранные файлы
  23.                 $zip = new ZipArchive(); // подгружаем библиотеку zip
  24.                 $zip_name = ROOT_DIR."/uploads/documents.zip"; // имя файла
  25.                 if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)
  26.                 {
  27.                         $stop .= "Ошибка создания архива";
  28.                 }
  29.                        
  30.                 foreach($docfile as $file)
  31.                 {
  32.                         $zip->addFile($file_folder.$file); // добавляем файлы в zip архив
  33.                 }
  34.                        
  35.                 $zip->close();
  36.         }
  37. }


архив создается, но внутри архива создается папка ../../uploads/ и document как можно избежать создания этих директорий?

(Отредактировано автором: 01 Ноября, 2013 - 14:51:23)

 
 Top
SAD
Отправлено: 01 Ноября, 2013 - 15:36:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




PHP:
скопировать код в буфер обмена
  1. $file_folder = "../../"; // папка с файлами
  2.  

?
 
 Top
kuller
Отправлено: 01 Ноября, 2013 - 15:46:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




SAD пишет:
PHP:
скопировать код в буфер обмена
  1. $file_folder = "../../"; // папка с файлами
  2.  

?


так же не будет работать т.к. в корневом каталоге нет файлов для архивации. они лежат в uploads/document/ а файл который создает архив download.php лежит в path/ajax/ поэтому и написано ../../uploads/document/
 
 Top
soleg
Отправлено: 01 Ноября, 2013 - 19:11:24
Post Id


Гость


Покинул форум
Сообщений всего: 71
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Не сталкивался с этим, но вот так должно работать.

после
PHP:
скопировать код в буфер обмена
  1. $file_folder = "../../uploads/document/"; // папка с файлами

добавить


а
PHP:
скопировать код в буфер обмена
  1.  
  2. $zip->addFile($file_folder.$file); // добавляем файлы в zip архив
  3.  

заменить на
PHP:
скопировать код в буфер обмена
  1. $zip->addFile($file); // добавляем файлы в zip архив
 
 Top
kuller
Отправлено: 01 Ноября, 2013 - 20:05:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




soleg пишет:
Не сталкивался с этим, но вот так должно работать.


работает. спасибо. Еще один вопрос по данной теме. Есть там же код для автоматического скачивания архива после создания

PHP:
скопировать код в буфер обмена
  1. if(file_exists($zip_name))
  2.                 {
  3.                         // отдаём файл на скачивание
  4.                         header('Content-type: application/zip');
  5.                         header('Content-Disposition: attachment; filename="'.$zip_name.'"');
  6.                         readfile($zip_name);
  7.                         // удаляем zip файл если он существует
  8.                         unlink($zip_name);
  9.                 }


код не срабатывает наверно иза того что архив создается по ajax запросу? можно как та скачать архив сразу после создания?

(Отредактировано автором: 01 Ноября, 2013 - 20:06:52)

 
 Top
soleg
Отправлено: 01 Ноября, 2013 - 22:16:11
Post Id


Гость


Покинул форум
Сообщений всего: 71
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Для того что бы скачать файлы через ajax нужны либо костыли либо отдельный плагин, например

http://johnculviner[dot]com/jquery-f[dot][dot][dot]-file-downloads/
 
 Top
IllusionMH
Отправлено: 01 Ноября, 2013 - 23:34:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




kuller, генерировать уникальную ссылку, отдавать как результат запроса и открыть попап или попробовать добавить айфэйм с ссылкой на файл.
 
 Top
kuller
Отправлено: 02 Ноября, 2013 - 06:54:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




спасибо. сделал так проверяю результат создания архива если удачно, то в js делаю переадресацию на файл
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB