Ajax file upload + Bitrix

26.08.2016  06:03

Типовая задача: загрузка файла Аяксом. В данном случае — подгрузка аватарки авторизованным пользователем на сайте под 1С-Битрикс.

Яваскрипт:
if (window.jQuery) {
$(document).ready(
  function()
  {
$('.add-photo').click(function() {
	$('#avatar_file').trigger('click');
	return false;
});
$('#avatar_file').change(function() {
var file_data = $('#avatar_file').prop('files')[0];   
    var form_data = new FormData();                  
    form_data.append('file', file_data);                           
    $.ajax({
                url: '/ajax/file_upload.php', // point to server-side PHP script 
                dataType: 'text',
                cache: false,
                contentType: false,
                processData: false,
                data: form_data,                         
                type: 'post',
                success: function(php_script_response){
                    //alert(php_script_response + 'ok'); // display response from the PHP script, if any
                }
     });
return false;
});
});
}


php файл:
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->RestartBuffer();
CModule::IncludeModule("user");
// upload file and update user photo
if ( 0 < $_FILES['file']['error'] ) {
	echo 'Error: ' . $_FILES['file']['error'] . '
'; } else { move_uploaded_file($_FILES['file']['tmp_name'], $_SERVER["DOCUMENT_ROOT"].'/upload/tmp/' . $_FILES['file']['name']); if (file_exists($_SERVER["DOCUMENT_ROOT"].'/upload/tmp/' . $_FILES['file']['name'])) { $rsUser = CUser::GetByID($USER->GetID()); $arUser = $rsUser->Fetch(); $arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].'/upload/tmp/' . $_FILES['file']['name']); $user = new CUser; $fields = Array( "PERSONAL_PHOTO" => $arFile, ); $user->Update($arUser['ID'], $fields); $strError = $user->LAST_ERROR; unlink($_SERVER["DOCUMENT_ROOT"].'/upload/tmp/' . $_FILES['file']['name']); } else { echo 'copy error'; } } move_uploaded_file( $_FILES['file']['tmp_name'], 'upload/tmp/' . $_FILES['file']['name'] );


PHP-запчасть может быть любая, под ваши нужды.


перейти в Блог | Блог (стр. 8)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 40  JavaScript 24  PHP 52  web-программирование 76  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)