(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), будет использован размер файла, если указано значение ZipArchive::LENGTH_UNCHECKED
, будет использован весь файл (начиная со значения параметра start
).
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 / 1.18.0 | Добавлен параметр flags . |
8.3.0 / 1.22.1 | Добавлена константа ZipArchive::FL_OPEN_FILE_NOW . |
8.3.0 / 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. Это предотвращает удаление только что добавленного в архив файла до того, как он будет разблокирован.