Документация для разработчиков
Темная тема

CopyFile

Описание и параметры

int
CFile::CopyFile(
	int file_id,
	bool Register = true,
	newPath = ""
)

Метод копирует зарегистрированный файл и возвращает ID нового файла копии. Статический метод.

Метод устарел. Рекомендуется вместо него использовать метод CFile::AddDuplicate.

Параметры

ПараметрОписание С версии
file_id Цифровой идентификатор файла предназначенного для копирования.
Register Необязательный. Если в Register указать false, то файл не будет зарегистрирован в таблице файлов. Функция вернет true, если файл будет успешно скопирован.10.0.11
newPath Необязательный. Указывается относительно $_SERVER['DOCUMENT_ROOT'].'/upload/' 10.0.11

Смотрите также

Примеры использования

<?
if ($rsElements = GetIBlockElementListEx($IBLOCK_TYPE, $IBLOCK_ID, false, array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER, "ID" => "ASC"), false, $arrFilter)):
	$rsElements->NavStart($PAGE_ELEMENT_COUNT);
		while ($obElement = $rsElements->GetNextElement()):
			$arElement = $obElement->GetFields();
			$arrNewImages[$arElement["ID"]][] = CFile::CopyFile($arElement["PREVIEW_PICTURE"]);
		endwhile;
endif;
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
2
Дмитрий Носиков
Столкнулся с одной, неочевидной особенностью данного метода. Если Вы передаете методу при копировании параметр newPath, то в таком случае, для копирования файла, одного ID будет недостаточно.
Помимо нового пути (который, кстати, задается относительно папки для загрузки файлов, указанной по умолчанию в настройках Главного модуля), вам необходимо передавать имя копируемого файла. Выглядит это примерно следующим образом:
Код
$fileID = '350';
$fileInfo = CFile::GetByID($fileID);

if($fileArr = $fileInfo->Fetch())
{
    $newFilePath = 'user_files/'.$fileArr['FILE_NAME'];
    $fileCopy = CFile::CopyFile($fileID, true, $newFilePath);
}
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх