Услуги профессионального Битрикс-программиста

Диск api bitrix24 коробка


CModule::IncludeModule('disk'); //диск
\Bitrix\Main\Loader::includeModule('disk');
Посмотреть данные о диске тут:  
Настройки - Производительность - Таблицы - b_disk_storage
работа с файлом диска
$file = Bitrix\Disk\File::getById($fileId); //получить файл

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

$file->delete($userId); //удалить из-под пользователя 
удалить диск
$userId = 1; //id пользователя, от имени которого будет совершаться удаление
$storageId = 100; //id хранилища Диска, которые вы желаете удалить. См. таблицу b_disk_storage
$errors = null;
$storage = \Bitrix\Disk\Storage::loadById($storageId);
if($storage){
    if(!$storage->delete($userId)){
        $errors = $storage->getErrors();
    }
}
переименовать диск
$storageId = 100; //id хранилища Диска, которые вы желаете переименовать. См. таблицу b_disk_storage
$newName = 'NewName'; //новое имя
$errors = null;

$storage = \Bitrix\Disk\Storage::loadById($storageId);
if($storage){
    if(!$storage->rename($newName)){
        $errors = $storage->getErrors();
    }
}
ограничить размер
Важно!
Должна быть активна настройка «Разрешить квотирование хранилищ»
Настройки > Настройки продукта > Настройки модулей > Диск
$userId = 1; //кому

$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId);
//установить лимит в 1024*1024 байт
$storage->setSizeLimit(1024*1024);

//отключить лимит 
$storage->setSizeLimit(null);
получить путь
$fileId = 100;

$file = \Bitrix\Disk\File::getById($fileId);
$urlManager = \Bitrix\Disk\Driver::getInstance()->getUrlManager();

var_dump($urlManager->getPathFileDetail($file));
var_dump($urlManager->getPathInListing($file));
ОБРАБОТЧИКИ
обработчик, который при изменении пользователя диск ограничивает
AddEventHandler("main", "OnAfterUserUpdate", "SetMaxFileSizeDisk"); 
function SetMaxFileSizeDisk($arFields){ 
   $userId = $arFields["ID"]; 
   if(CModule::IncludeModule('disk')){ 
      $storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId); 
      $storage->setSizeLimit(1073741824); //1гб = 1073741824байт 
   } 
}
обработчик, который удаляет файлы в чате более 10мб
AddEventHandler("im", "OnAfterFileUpload", "CheckFileSize");
function CheckFileSize($arFields){   
   if(!empty($arFields["FILE"]["size"]) && ($arFields["FILE"]["size"]>10485760) && CModule::IncludeModule("disk")){ //10мб
      $file = Bitrix\Disk\File::getById($arFields["FILE_ID"]);      
      if($file->delete(1)&&CModule::IncludeModule('im')){         
         CIMMessenger::Update($arFields["MESSAGE_ID"], 'Не удалось загрузить файл. Превышен размер в 10мб.');
      }

   }
}