Получить ID картинки зная лишь ее путь (Bitrix API)
Подскажите как можно простым способом получить ID картинки зная лишь путь к файлу (/upload/iblock/212/21232121288522265c927d1df55305f8.jpg)?
Нужна обратная функция CFile::GetByID. Вроде как-то можно через CFile::GetList, но не могу понять как.
Спасибо.
Ответы (1 шт):
Автор решения: Denis
→ Ссылка
Попробуйте так:
function getFileIdBySrc($strFilename){
$strUploadDir = '/'.\Bitrix\Main\Config\Option::get('main', 'upload_dir').'/';
$strFile = substr($strFilename, strlen($strUploadDir));
$strSql = "SELECT ID FROM b_file WHERE CONCAT(SUBDIR, '/', FILE_NAME) = '{$strFile}'";
return \Bitrix\Main\Application::getConnection()->query($strSql)->fetch()['ID'];
}
Использовать так:
print getFileIdBySrc('/upload/iblock/212/21232121288522265c927d1df55305f8.jpg');
Готового способа нет, поэтому функция выполняет несколько действий:
- определяет путь к файлу без начального /upload/,
- ищет в БД файл, который лежит по такому пути (в БД подпапка iblock/212 и имя файла 21232121288522265c927d1df55305f8.jpg хранятся в разных полях, поэтому применяется CONCAT).