@deadlockone
разработчик

Как добавить картинки на инфоблок через API?

Как добавить(загрузить) картинки на инфоблок, через постман?
написал такой код:
$targetDir = $_SERVER["DOCUMENT_ROOT"]."/upload/tmp/";
    $allowTypes = array('jpg','png','jpeg','gif');
    $url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}";
    $statusMsg = $errorMsg = $arrPhoto = $errorUpload = $errorUploadType = $arrTmp = [];
    if(!empty(array_filter($_FILES['photo']['name']))) {
        foreach ($_FILES['photo']['name'] as $key => $val) {
            // File upload path
            $fileName = basename($_FILES['photo']['name'][$key]);
            $targetFilePath = $targetDir . $fileName;
            $file_info = $_FILES["photo"]["tmp_name"];

            // Check whether file type is valid
            $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);
            echo json_encode($fileType);
            if (in_array($fileType, $allowTypes)) {
                // Upload file to server
                if (move_uploaded_file($_FILES["photo"]["tmp_name"][$key], $targetFilePath)) {
                    $file_info = $_SERVER["DOCUMENT_ROOT"]."/upload/tmp/".$file_info;
                    $prop["photo"]["n".count($prop["photo"])]["VALUE"] = $file_info;
                    $arrPhoto[] = $url . $targetFilePath;
                } else {
                    $errorUpload[] = $_FILES['photo']['name'][$key];
                }
            } else {
                $errorUploadType[] = $_FILES['photo']['name'][$key];
            }
        }
    }

$prop = array(
"photo" => $arrPhoto
);


он записывают на локальный файле, но не показывает в админке.
Как загрузить встроенный битрикс методом?
Подскажите, как можно загрузить картинки через постман?
  • Вопрос задан
  • 1866 просмотров
Пригласить эксперта
Ответы на вопрос 1
@RuComMarket
Битрикс FullStack разработчик
надо средствами битрикса сохранять файл
мой старый вариант:
$file_im = CFile::CheckImageFile($_FILES["PREVIEW_PICTURE"],0,0,0,"IMAGE");
		if (!$file_im) {
			CAllFile::ResizeImage(
				$_FILES["PREVIEW_PICTURE"],
				array(
				 "width" => "800",
				 "height" => "800"
				),
				BX_RESIZE_IMAGE_PROPORTIONAL_ALT
			  );
			$file_ID = CFile::SaveFile($_FILES["PREVIEW_PICTURE"], "catalog/".$type_object);
		} else {
			$return["error"]["str"] = $file_im;
			exit(\Bitrix\Main\Web\Json::encode($return));
		}
		if ($file_ID) $file_pp = CFile::MakeFileArray($file_ID);

и дальше забиваешь в нужное свойство инфоблока, например PREVIEW_PICTURE, т.е. сначала сохраняешь, в ответе приходит id, по нему получаешь нужный массив, который вбиваешь в нужное поле
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы