(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)
ZipArchive::addFile — Добавляет в ZIP-архив файл по заданному пути
$filepath,$entryname = "",$start = 0,$length = ZipArchive::LENGTH_TO_END,$flags = ZipArchive::FL_OVERWRITEДобавляет в ZIP-архив файл по заданному пути.
Замечание: Для максимальной переносимости, рекомендуется всегда пользоваться прямыми слешами
/как разделителями директорий в именах файлов.
filepathПуть к файлу, который требуется добавить.
entryname
Имя файла внутри ZIP-архива. Параметр переопределит параметр filepath.
startНачальная позиция для частичного копирования.
length
Длина, которую требуется скопировать при частичном копировании.
Метод использует размер файла,
если указали значение ZipArchive::LENGTH_TO_END (0).
Метод использует весь файл начиная со значения параметра start,
если указали значение ZipArchive::LENGTH_UNCHECKED.
flags
Битовая маска из следующих значений:
ZipArchive::FL_OVERWRITE,
ZipArchive::FL_ENC_GUESS,
ZipArchive::FL_ENC_UTF_8,
ZipArchive::FL_ENC_CP437,
ZipArchive::FL_OPEN_FILE_NOW.
Поведение констант описывает страница «ZIP-константы».
Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
| Версия | Описание |
|---|---|
| 8.0.0, PECL-модуль zip 1.18.0 |
Добавили параметр flags.
|
| 8.3.0, PECL-модуль zip 1.22.1 |
Добавили константу ZipArchive::FL_OPEN_FILE_NOW.
|
| 8.3.0, PECL-модуль zip 1.22.2 |
Добавили константы, которые устанавливают значение длины:
ZipArchive::LENGTH_TO_END
и ZipArchive::LENGTH_UNCHECKED.
|
В примере открывается файл ZIP-архива test.zip и в архив добавляется файл /path/to/index.txt с именем newname.txt.
Пример #1 Открыть и добавить
<?php
$zip = new ZipArchive();
if ($zip->open('test.zip') === TRUE) {
$zip->addFile('/path/to/index.txt', 'newname.txt');
$zip->close();
echo 'готово';
} else {
echo 'ошибка';
}
?>Замечание:
При добавлении файла в архив PHP заблокирует файл. Разблокировка произойдёт только после закрытия объекта ZipArchive, путём вызова ZipArchive::close() или уничтожения объекта ZipArchive. Это предотвращает удаление файла, который только что добавили в архив, до того, как PHP разблокирует файл.