Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP, Zip] Заархивировать так как нужно / 25 сообщений из 39, страница 1 из 2
22.06.2013, 15:52
    #38307066
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
Здравствуйте, есть на сайте папка 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
22.06.2013, 21:08
    #38307171
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
спрошу покороче: Вордовский файл при прмощи php можно заархивировать сразу в архиве?, а то у меня получается, что в архиве папка, а в папке нужный файл
...
Рейтинг: 0 / 0
22.06.2013, 21:19
    #38307172
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
http://php.net/manual/en/ziparchive.addfile.php
Смотрите внимательно параметры, особенно второй.
...
Рейтинг: 0 / 0
22.06.2013, 21:49
    #38307178
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
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
22.06.2013, 22:09
    #38307184
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
катастрофа,

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


как понять?, а то я два раза условия ставлю и они помогают..
...
Рейтинг: 0 / 0
22.06.2013, 22:34
    #38307189
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
катастрофада смотрел я в него, просветление не приходитА так - тоже не приходит? ;-)
http://php.net/manual/en/ziparchive.addfile.php $zip->addFile('/path/to/index.txt', 'newname.txt');
...
Рейтинг: 0 / 0
22.06.2013, 22:41
    #38307191
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
vkle, ладно други - утро вечера мудреней, до завтра, может чего приснится...
...
Рейтинг: 0 / 0
23.06.2013, 08:05
    #38307268
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
эту строку
Код: 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
23.06.2013, 09:51
    #38307278
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
Open сделать надо да
...
Рейтинг: 0 / 0
23.06.2013, 10:04
    #38307284
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
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
23.06.2013, 11:58
    #38307315
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
Внимательно посмотреть на аргументы open
...
Рейтинг: 0 / 0
23.06.2013, 14:18
    #38307361
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
...
Рейтинг: 0 / 0
23.06.2013, 15:22
    #38307394
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP, Zip] Заархивировать так как нужно
vkle,
хоть засмотрись, на ум приходит только изменить на
Код: php
1.
if ($zip_archive -> open(getcwd()."Library/UIK_RF&05.04.2013.zip", ZIPARCHIVE::CREATE) == TRUE)


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

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


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


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

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


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


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