из под ката берем его содержимое (поправить строчку номер 3!)
1. Создаем на сервере папку и по ftp заливаем файлы картинок.
2. Открываем /bitrix/admin/my_upload.php
3. Заполняем и сабмитим форму.
4. Проверяем результат.
5. Удаляем папку с файлами или только файлы.
PS При небольшом желании дорабатываем скрипт под свои нужды. поверьте это не больно
PPS Все пожелания по опциям которые должно будет поддерживать "полное" решение пишите сюда.
[spoiler]
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); $ALLOWED_USER=6; if($REQUEST_METHOD == "POST" && ($Load!="") && $USER->GetID()==$ALLOWED_USER && check_bitrix_sessid()) { $_SESSION["uploader"]["images_dir"] = $_REQUEST["images_dir"]; $_SESSION["uploader"]["iblock_id"] = $_REQUEST["iblock_id"]; $_SESSION["uploader"]["message"] = array(); $dir = $_SERVER["DOCUMENT_ROOT"].$_SESSION["uploader"]["images_dir"]; $arImages = array(); if(is_dir($dir)) { if ($dh = opendir($dir)) { while(($file = readdir($dh)) !== false) { if($file!="." && $file!=".." && is_file($dir."/".$file)) $arImages[]=$file; } closedir($dh); if(count($arImages)>0) { foreach($arImages as $file) { $arFields = Array( "IBLOCK_ID"=>$iblock_id, "ACTIVE" => "Y", "NAME" => $file, //TODO:resize "PREVIEW_PICTURE"=>CFile::MakeFileArray($dir."/".$file), "PREVIEW_TEXT_TYPE" => "text", "PREVIEW_TEXT" => $file, "DETAIL_PICTURE"=>CFile::MakeFileArray($dir."/".$file), "DETAIL_TEXT_TYPE" => "text", "DETAIL_TEXT" => $file, ); $obImage = new CIBlockElement; $IMAGE_ID = intval($obImage->Add($arFields)); if($IMAGE_ID<=0) $_SESSION["uploader"]["message"][] = "Error adding image: $f\n"; //break; } } else $_SESSION["uploader"]["message"][] = "No files found in the directory"; } else $_SESSION["uploader"]["message"][] = "Open directory error"; } else $_SESSION["uploader"]["message"][] = "Not a directory"; if(count($_SESSION["uploader"]["message"])==0) $_SESSION["uploader"]["message"][]="All files was imported"; localredirect($APPLICATION->GetCurPageParam()); } require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); if($USER->GetID()!=$ALLOWED_USER) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); CAdminMessage::ShowMessage(implode("<br>",$_SESSION["uploader"]["message"])); unset($_SESSION["uploader"]["message"]); ?> <form method="post"> <table cellborder="0" cellpadding="2" cellspacing="0"> <tr> <td>Images dir:</td> <td><input type="text" size="45" name="images_dir" value="<?=htmlspecialchars($_SESSION["uploader"]["images_dir"])?>"></td> </tr> <tr> <td>IBlock ID:</td> <td><input type="text" size="45" name="iblock_id" value="<?=htmlspecialchars($_SESSION["uploader"]["iblock_id"])?>"></td> </tr> </table> <?echo bitrix_sessid_post();?> <input type="submit" name="Load" value="Load!"> </form> <? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?> |
Если человек может написать/корректно поправить такой скрипт, то ему вышеприведенное без надобности, а если не может - я бы не стал ему такое давать.
Насчет МНОГО и БЫСТРО я бы поспорил - чего только стоит двукратный вызов совершенно не легкой CFile::MakeFileArray().
Fatal error: Cannot instantiate non-existent class: ciblockelement in z:\home\alliance\www\bitrix\admin\my_upload.php on line 38
Понять не могу из-за чего эта ошибка
Добавить еще 2 строчки
Все заработало...
2. Строчку
Заменить на
PS я не проверял, но должно сработать.
<input type="text" size="45" name="images_dir" value="<?=htmlspecialchars($_SESSION["uploader"]["thumbs_dir"])?>">
Надо читать как
<input type="text" size="45" name="thumbs_dir" value="<?=htmlspecialchars($_SESSION["uploader"]["thumbs_dir"])?>">
и еще добавить строчку
$_SESSION["uploader"]["thumbs_dir"] = $_REQUEST["thumbs_dir"];
Все заработало.
И последний вопрос. Можно ли сделать так чтобы фотографии записывались не в ID инфо.блока, а в ID разделов инфо.блока?
Я только начал осваивать битрикс, и был бы рад любой помощи в этом вопросе.
Спасибо.
Я понимаю, то это уже отход от темы, но ткните, пожалуйста, какой админский класс в этом может помочь: Как прикрутить выбор папки на сервере?
парсить имена файлов (на случай нескольких картинок с окончаниями _1, _2 и т.д.) и потом искать элемент по артикулу?