Битрикс: загрузка фотографии пользователя
2016-07-02
Достаточно простой способ загрузки фотографии для текущего пользователя. Используется только форма и PHP обработчик.
Форма
<form action="action.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
Обработчик
Обработчик достаточно стандартный для PHP но в него добавлены функции Битрикса для привязки фото к текущему пользователю.
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную
move_uploaded_file($_FILES["filename"]["tmp_name"], $_SERVER["DOCUMENT_ROOT"]."/upload/tmp/".$_FILES["filename"]["name"]);
$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/upload/tmp/".$_FILES["filename"]["name"]);
$arFile["MODULE_ID"] = "main";
$fid = CFile::SaveFile($arFile, "main");
if (intval($fid)>0)
{
$arPhoto = CFile::MakeFileArray($fid);
$user = new CUser;
$fields = Array(
"PERSONAL_PHOTO" => $arPhoto,
);
$user->Update($USER->GetID(), $fields);
CFile::Delete($fid);
unlink($_SERVER["DOCUMENT_ROOT"]."/upload/tmp/".$_FILES["filename"]["name"]);
}
} else {
echo("Ошибка загрузки файла");
}