Раз никто не ответил, то отвечу я)
В битриксе все файлы хранятся в папке upload, но при загрузке все они фиксируются в таблице b_file. Собственно апи CFile работает именно с таблицей b_file и самими файлами.
Модуль "Диск" является НАДСТРОЙКОЙ над этой системой, для пользователя, соответственно обычно API не подойдет (вернее подойдет, но не совсем - увидите дальше).
Чтобы найти файл, Вам нужно знать где искать, а именно в каком хранилище.
Есть несколько способов это сделать, давайте рассмотрим конкретный случай - вы знаете как называется файл, но не знаете где он лежит.
Итак, точное название файла мы не знаем, но оно содержит в себе слово "файл";
Код |
---|
// Уменьшаем количество кода
use Bitrix\Main\Loader;
use Bitrix\Disk;
if ( Loader::IncludeModule('disk') )
{
$diskFile = Disk\File::load(['%NAME'=>'файл']);
// Если файл нашелся и он существует, то в $diskFile будет объект класса Bitrix\Disk\File, для работы с ним
// На этот классе можно вызвать метод getFile(), который вернет вам структуру из b_file, либо
// через класс \Bitrix\Disk\UrlManager при помощи методов getUrlForDownloadFile / getUrlForShowFile
// сразу получить ссылку на скачивание или просмотр
} |
Все немножечко печальнее, если таких файлов может быть N-штук.
Код |
---|
// Уменьшаем количество кода
use Bitrix\Main\Loader;
use Bitrix\Disk;
if ( Loader::IncludeModule('disk') )
{
$arDiskFiles = Disk\Internals\FileTable::getList(['filter'=>['%NAME'=>'файл']]);
// Работает для версии main старше 17.0
foreach( $arDiskFiles as $arFile )
{
$file = Disk\BaseObject::buildFromArray($arFile);
// Опять же в $file будет объект класса Bitrix\Disk\File
}
} |