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

Добавление картинок в поля лида

Пример размещения на странице сайта формы с возможностью прикрепления файлов. По заполнении формы в Битрикс24 будет создаваться новый лид.
В коде ниже есть пользовательские поля:
UF_CRM_1551350435588 - множественное свойство типа файл;
UF_CRM_1551362436225 - свойство типа файл.

Внимание! Для использования примера настройте работу класса CRest и подключите файл crest.php в файлах, где используется данный класс. Подробнее.

  1. Создаём форму на нужной странице:
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    	<script>
    		$(document).ready(function() {
    			$('#form_to_crm_file').on( 'submit', function(el) {//event submit form
    				el.preventDefault();//the default action of the event will not be triggered
    				var formData = new FormData(this);
    				var xhr = new XMLHttpRequest();
    				xhr.open("POST", 'form.php');
    				xhr.onreadystatechange = function () {
    					if (this.readyState === 4) {
    						if (this.status >= 200 && this.status < 400) {
    							// Success!
    							var resp = this.responseText;
    							try {
    								var json = JSON.parse(resp);
    								if (typeof json.message !== 'undefined') {
    									alert(json.message);
    								}
    
    							} catch (e) {
    								return false;
    							}
    
    						} else {
    							alert('error');
    						}
    					}
    				};
    				xhr.send(formData);
    			});
    		});
    	</script>
    	<form id="form_to_crm_file" method="post" enctype="multipart/form-data">
    		<input type="text" name="NAME" placeholder="Name" required>
    		<input type="text" name="LAST_NAME" placeholder="Last name">
    		<input type="text" name="PHONE" placeholder="Phone">
    		<input type="text" name="EMAIL" placeholder="E-mail">
    		<input type="file" name="FILE" placeholder="File">
    		<input type="file" name="FILES[]" placeholder="Files" multiple="multiple">
    
    		<input type="submit" value="Submit">
    	</form>
    
  2. Создаём файл form.php, для сохранения заполненных форм:
    <?
    	$sName = htmlspecialchars($_POST["NAME"]);	
    	$sLastName = htmlspecialchars($_POST["LAST_NAME"]);
    	$sPhone = htmlspecialchars($_POST["PHONE"]);
    	$sEmail = htmlspecialchars($_POST["EMAIL"]);
    	//UF_CRM_1551350435588 - multiple file field
    	//UF_CRM_1551362436225 - file field
    	$arFiles = [];
    	$arFile = [];
    	//make array multiple files for add to custom field
    	if(!empty($_FILES['FILES']['tmp_name']) && is_array($_FILES['FILES']['tmp_name'])){
    		foreach($_FILES['FILES']['tmp_name'] as $k=>$path){
    			$arFiles[] = [
    				"fileData" => [
    					$_FILES['FILES']['name'][$k],
    					base64_encode(file_get_contents($path))
    				]
    			];
    		}
    	}
    	//make file array for add to custom field
    	if(!empty($_FILES['FILE']['tmp_name'])){
    		$arFile = [
    			"fileData" => [
    				$_FILES['FILE']['name'],
    				base64_encode(file_get_contents($_FILES['FILE']['tmp_name']))
    			]
    		];
    	}
    	//Форматируем Phone и почту для сохранения
    	$arPhone = (!empty($sPhone)) ? array(array('VALUE' => $sPhone, 'VALUE_TYPE' => 'WORK')) : array();
    	$arEmail = (!empty($sEmail)) ? array(array('VALUE' => $sEmail, 'VALUE_TYPE' => 'HOME')) : array();
    
    	$result = CRest::call(
    		'crm.lead.add',
    		[
    		'fields' =>[
    			'TITLE' => 'From the site: '.implode(' ',[$sName,$sLastName]),//*Lead Name[string]
    			'NAME' => $sName,//Name[string]
    			'UF_CRM_1551350435588' => $arFiles,
    			'UF_CRM_1551362436225' => $arFile,
    			'LAST_NAME' => $sLastName,//Last name[string]
    			'PHONE' => $arPhone,//Phone[string]
    			'EMAIL' => $arEmail,//E-mail[string]
    		]
    	]);
    	if(!empty($result['result'])){
    		echo json_encode(['message' => 'Lead add']);
    	}elseif(!empty($result['error_description'])){
    		echo json_encode(['message' => 'Lead not added: '.$result['error_description']]);
    	}else{
    		echo json_encode(['message' => 'Lead not added']);
    	}
    ?>


© «Битрикс», 2001-2024, «1С-Битрикс», 2024