Бортовой журнал Ктулху

Битрикс: загрузка фотографии пользователя

Достаточно простой способ загрузки фотографии для текущего пользователя. Используется только форма и 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("Ошибка загрузки файла");
 }