Работа с файлами модуля Диск. Получаем ссылку на диск, публичную ссылку в Битрикс24

46
Для начала подключим модуль диска:

\Bitrix\Main\Loader::includeModule('disk');

Рассмотрим пример получения файла из описания(текста), элемента:
//получим ID файлов из Текста сущности
if (preg_match_all('|\[DISK\sFILE\sID=([n]*\d+)\]|', $arPost["DETAIL_TEXT"], $matches))
{
foreach($matches[1] as $inlineFileId)
{
//получаем ID файла, для последующего поиска на диске
list($type, $realValue) = \Bitrix\Disk\Uf\FileUserType::detectType($inlineFileId);

//ищем файл
$file = \Bitrix\Disk\File::loadById($realValue);

//если файл найден
if($file) {
//получим публичную ссылку
$extLink = $file->getExternalLinks()[0];
//если у файла нет публичной ссылки, с генерируем ее:
if (empty($extLink))
$extLink = $file->addExternalLink(array(
'CREATED_BY' => $createdBy,
'TYPE' => $type
));
//получим хэш публичной ссылки, для построения URL
$hash = $extLink->getHash(); //в переменной $link полученная публичная ссылка на файл $link = "/docs/pub/" . $hash . "/default/";
}
}
}
Рассмотрим пример получения ссылки на файл модуля Диск:

$realValue // полученный ранее ID файла 
$file = \Bitrix\Disk\File::loadById($realValue); // получим объект файла 
$name = $file->getName(); // получим имя файла
$info = $file->getFile(); // получим информацию о файле
$link = \Bitrix\Disk\Driver::getInstance()->getUrlManager()->getUrlForShowFile($file); // получим ссылку на файл в Диске

Яндекс.Метрика