powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP, Zip] Заархивировать так как нужно
25 сообщений из 39, страница 1 из 2
[PHP, Zip] Заархивировать так как нужно
    #38307066
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, есть на сайте папка Library в ней файлы Ворда, как их все по очереди заархивировать, но чтобы имя файла Ворда и zip файла совпадали, но в архиве этот файл Ворда был сразу, а не вложенным в папку Library, сделал так:
Код PHP
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
<?php
//этот скрипт php пройдет на сайте по пути Library/любая папка/любой файл - знак звёздочки "*" 
//рекурсию, то есть определения папок/файлов глубже не делает!!!
//и вернет листинг папок/файлов соответствующих шаблону php функции glob()
foreach(glob('Library/*') as $file)  
{  
//file archiving - файл для архивирования, в php вместо пробелов не нужно указывать "%20", лучше указывать "_"
//сцеплять строки - для этого предназначен оператор точка "."
$file_archiving =$file;
//file in archive - файл в архиве, в php вместо пробелов не нужно указывать "%20", лучше указывать "_"
//заменям три последних знака в имени файла "doc" на "zip"
$file_in_archive =substr($file_archiving, 0, strlen($file_archiving)-3)."zip"; 
 
//условие, если отсутствует файл с именем ..., с путём ...
if(!file_exists($file_in_archive))
{//начало операторов, выполняемых при истине строки if(!file_exists($file_in_archive))
//создаётся объект
 $zip_archive = new ZipArchive();
//if - если, $zip_archive -> open(getcwd()."/$file_in_archive", ZIPARCHIVE::CREATE - открывается новый zip-архив
  if ($zip_archive -> open(getcwd()."/$file_in_archive", ZIPARCHIVE::CREATE) == TRUE)
  {
//к архиву добавляется файл (это можно повторить несколько раз)
//заархивированный файл создаётся не всегда, только, когда отсутствует файл, так как работает условие, если отсутствует файл с именем ..., с путём ...
//если бы этого условия не было, тогда более свежий файл заменял бы более старый файл
//откидываем первые 8 букв - "Library/" 
//string substr(string string, int start[, int length])
//substr - функция возвращает часть строки
//первый аргумент – исходная строка
//второй аргумент – положение в строке, которую надо вернуть, первого символа (отсчет начинается с нуля)
//третий аргумент – длина строки в символах, которую надо вернуть
//если третий аргумент не указан, тогда возвращается вся оставшаяся часть строки 
  $zip_archive -> addFile(substr($file, 7));
//закрывается созданный архив с сохранением всех добавлений
  $zip_archive -> close();
}//конец операторов, выполняемых при истине строки if(!file_exists($file_in_archive))
}
}
?>


не взлетело
???
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307171
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спрошу покороче: Вордовский файл при прмощи php можно заархивировать сразу в архиве?, а то у меня получается, что в архиве папка, а в папке нужный файл
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307172
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://php.net/manual/en/ziparchive.addfile.php
Смотрите внимательно параметры, особенно второй.
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307178
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
что-то туплю, хожу вокруг да около, если без переменных
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?php
$file_archiving ='Library/UIK_RF&05.04.2013.doc';
$file_in_archive ='Library/UIK_RF&05.04.2013.zip'; 
$zip_archive = new ZipArchive();
if ($zip_archive -> open(getcwd()."Library/UIK_RF&05.04.2013.zip", ZIPARCHIVE::CREATE) == TRUE)
  {
$zip_archive -> addFile('UIK_RF&05.04.2013.doc');
//закрывается созданный архив с сохранением всех добавлений
$zip_archive -> close();
}
?>


как изменить код, чтобы создался архив в: Library/UIK_RF&05.04.2013.zip
в него входил только: UIK_RF&05.04.2013.doc
который лежит: Library/UIK_RF&05.04.2013.doc
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307184
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Таки загляните уже в мануал, там есть пример того что Вам нужно.
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307187
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, да смотрел я в него, просветление не приходит
эту часть кода
Код: html
1.
 ($zip_archive -> open(getcwd()."Library/UIK_RF&05.04.2013.zip", ZIPARCHIVE::CREATE) == TRUE)


как понять?, а то я два раза условия ставлю и они помогают..
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307189
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофада смотрел я в него, просветление не приходитА так - тоже не приходит? ;-)
http://php.net/manual/en/ziparchive.addfile.php $zip->addFile('/path/to/index.txt', 'newname.txt');
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307191
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, ладно други - утро вечера мудреней, до завтра, может чего приснится...
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307268
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эту строку
Код: php
1.
$zip->addFile('/path/to/index.txt', 'newname.txt');


я поннимаю так
//добавляет файл в ZIP архив из заданного пути
//путь к файлу, который требуется добавить
//если указан параметр, тогда это название внутри ZIP архива, чтобы переопределить имя файла
получается, что под мои нужды должно выглядеть
Код: php
1.
2.
3.
4.
5.
<?php
$zip_archive = new ZipArchive();
$zip_archive -> addFile('Library/UIK_RF&05.04.2013.doc', 'UIK_RF&05.04.2013.doc');
$zip_archive -> close();
?>


но получаю ошибки Invalid or unitialized Zip object
как нужно, подскажите пжл
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307278
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Open сделать надо да
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307284
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$zip_archive = new ZipArchive();
if ($zip_archive -> open(getcwd()."/UIK_RF&05.04.2013.zip", ZIPARCHIVE::CREATE) == TRUE)
{
$zip_archive -> addFile('Library/UIK_RF&05.04.2013.doc', 'UIK_RF&05.04.2013.doc');
$zip_archive -> close();
}
?>


берёт файл тот что нужно и откуда нужно, архив наполняет как нужно
НО
архив сохраняет в корневой папке, а нужно в Library, это можно сделать? что ещё поправить?
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307315
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внимательно посмотреть на аргументы open
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307361
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307394
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
хоть засмотрись, на ум приходит только изменить на
Код: php
1.
if ($zip_archive -> open(getcwd()."Library/UIK_RF&05.04.2013.zip", ZIPARCHIVE::CREATE) == TRUE)


но не помогает, швах, что делать?
я стану когда нибуть программистом?!
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307399
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Откройте уже для себя var_dump(), print_r(), echo....
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307405
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И мануал по PHP с его многочисленными примерами.
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307409
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы хотя бы сделали
Код: php
1.
var_dump(getcwd()."Library/UIK_RF&05.04.2013.zip")


то поняли бы, что слеша не хватает
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307417
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, ну так это же проверки, а что проверять я и так вижу, что не пашет
ну записал
var_dump(getcwd().'/Library/UIK_RF&05.04.2013.zip');
сознания не добавилось
???
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307419
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какого сознания?
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307420
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, сознания того как сделать правильно
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307423
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема сейчас?
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307430
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЕсли бы хотя бы сделали
Код: php
1.
var_dump(getcwd()."Library/UIK_RF&05.04.2013.zip")


то поняли бы, что слеша не хватает

нет уже проблем - ранее не видел это сообщение, вот и всё, делов-то
я стану когда-нибудь кодером?!
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307578
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос из разряда - незнаю как сформулировать, короче затык на этой строке
Код: php
1.
if (substr($file, 0, 2)= 'UK')


что ему не так?
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307582
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофачто ему не так?Эммм... Ну какгбэ... тут Вы пытаетесь присвоить значение возвращаемому значению функции.
...
Рейтинг: 0 / 0
[PHP, Zip] Заархивировать так как нужно
    #38307586
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, всё правильно я ставлю условие если первые две буквы = 'UK', что не так фиг поймёшь
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP, Zip] Заархивировать так как нужно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]