Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10930
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 4134
∙ повысить рейтинг »
vladisslav
Статус: Практикант
Рейтинг: 1353
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / PHP

Номер выпуска:1257
Дата выхода:12.11.2012, 22:00
Администратор рассылки:Устинов С.Е. (Профессионал)
Подписчиков / экспертов:98 / 44
Вопросов / ответов:1 / 1

Консультация # 186793: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: на странице сайта идёт раздача документов в формате Ворд эти файлы я вручную закидываю на хост, те кто по умнее хотели бы эти документы скачивать в заархированом виде, так вот, чтобы мне этим не парится мне можно архивацию возложить на сервер? или это я загнул? если ...


Консультация # 186793:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
на странице сайта идёт раздача документов в формате Ворд
эти файлы я вручную закидываю на хост, те кто по умнее хотели бы эти документы скачивать в заархированом виде, так вот, чтобы мне этим не парится мне можно архивацию возложить на сервер?
или это я загнул? если можно то как?
код напишите, спасибо

Дата отправки: 09.11.2012, 21:40
Вопрос задал: Ципихович Эндрю (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Коцюрбенко Алексей aka Жерар (Советник):

Здравствуйте, Ципихович Эндрю!

Вот пример кода:

Код (HTML):
<html>
<head>
 <title>Архивация файла</title>
</head>
<body>
<?php
 if (isset($_FILES['file']) AND $_FILES['file']['error']==0)
 {
 $zip_archive = new ZipArchive();
 $zip_file_name = substr_replace($_FILES['file']['name'], '.zip', strrpos($_FILES['file']['name'],'.'));
  if ($zip_archive -> open(getcwd()."/$zip_file_name", ZIPARCHIVE::CREATE) == TRUE)
  {
  $zip_archive -> addFile($_FILES['file']['tmp_name'], $_FILES['file']['name']);
  $zip_archive -> close();
  echo "<a href='$zip_file_name'>Ссылка для загрузки архива</a>";
  }
  else echo "<div>Архив не может быть создан</div>";  
 }
else echo "
 <form method=post enctype='multipart/form-data'>
 <div>Выберите файл: <input type=file name='file'> <input type=submit value='Отправить'> </div>
 </form>";
?>
</body>
</html>

Он загружает исходный файл на хостинг и сразу создаёт архив, используя класс ZipArchive. Сперва создаётся объект:
Код (PHP):
$zip_archive = new ZipArchive()


Потом открывается новый zip-архив:
Код (PHP):
$zip_archive ->
open(getcwd()."/$zip_file_name", ZIPARCHIVE::CREATE)

Первый параметр метода open - имя архива с полным путём (здесь оно получается из имени исходного файла заменой расширения на .zip и добавлением пути текущего каталога, Вы можете использовать для хранения архивов какой-то другой каталог и выбирать любое имя). Второй параметр - режим открытия (ZIPARCHIVE::CREATE означает создание нового архива). Возвращается TRUE, если архив успешно создан.

Затем к архиву добавляется файл (это можно повторить несколько раз):
Код (PHP):
$zip_archive -> addFile($_FILES['file']['tmp_name'], $_FILES['file']['name'])

Первый параметр метода addFile - имя добавляемого файла с полным путём (здесь это временный файл, созданный при загрузке через форму, Вы можете указать любое нужное имя), второй - имя файла внутри архива (если его не указывать, файл запишется в архив под своим именем вместе с полным путём). Возвращается TRUE, если файл успешно добавлен.

В конце закрывается созданный архив с сохранением всех добавлений:
Код (PHP):
$zip_archive -> close();


Проверить р аботу этого скрипта можно по ссылке.

Консультировал: Коцюрбенко Алексей aka Жерар (Советник)
Дата отправки: 10.11.2012, 15:32
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное