Документация для разработчиков
Темная тема

Диск

\Bitrix\Disk - пространство имен модуля Диск.

Перед использованием модуля необходимо проверить установлен ли он, и подключить его при помощи конструкции:

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

Примеры

Получить хранилище

<?php 
if (\Bitrix\Main\Loader::includeModule('disk')) 
{ 
	$driver = \Bitrix\Disk\Driver::getInstance(); 
	$storage = $driver->getStorageByUserId(1);//пользователя 
	$storage = $driver->getStorageByGroupId(33);//группы 
	$storage = $driver->getStorageByCommonId('shared_files_s1');//идентификатор 
	$storage = \Bitrix\Disk\Storage::loadById(66);//знаем идентификатор хранилища 
	if ($storage) 
	{ 
		//можем работать с хранилищем 
	} 
} 

Создать папку в хранилище

<?php 
if (\Bitrix\Main\Loader::includeModule('disk')) 
{ 
	$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1); 
	if ($storage) 
	{ 
		$folder = $storage->addFolder( 
			array( 
				'NAME' => 'New folder', 
				'CREATED_BY' => 1 
			) 
		); 
	} 
}

Поиск папки в хранилище.

<?php 
if (\Bitrix\Main\Loader::includeModule('disk'))
{
    $storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1);
    if ($storage)
    {
        // Ищем папку в корне хранилища
        $folder = $storage->getChild([
            '=NAME' => 'New folder',
            'TYPE' => \Bitrix\Disk\Internals\FolderTable::TYPE_FOLDER
        ]);
    }
}

Поиск корневой папки и подпапки в ней.

<?php 
if (\Bitrix\Main\Loader::includeModule('disk'))
{
    $storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1);
    if ($storage)
    {
        // Получаем корневую папку хранилища
        $parentFolder = $storage->getRootObject();
 
        if ($parentFolder)
        {
            // Ищем подпапку внутри $parentFolder
            $subFolder = $parentFolder->getChild([
                '=NAME' => 'SubFolder', 
                'TYPE' => \Bitrix\Disk\Internals\FolderTable::TYPE_FOLDER
            ]);
 
            if ($subFolder)
            {
                // Работаем с найденной подпапкой
            }
        }
    }
}

Создание подпапки в папке

<?php 
if (\Bitrix\Main\Loader::includeModule('disk'))  { 
	$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1); 
	if ($storage)  { 
		$folder = $storage->getRootObject();  
		$folder = $folder->getChild( 
			array( 
				'=NAME' => 'New folder',  
				'TYPE' => \Bitrix\Disk\Internals\FolderTable::TYPE_FOLDER 
			) 
		); 
		if ($folder) { 
			$folder->addSubFolder(    array( 
				'NAME' => 'New folder 2', 
				'CREATED_BY' => 1 
			)); 
		} 
	} 
}

Задание прав на папку

<?php 
	if ($folder) 
	{ 
		$rightsManager = \Bitrix\Disk\Driver::getInstance()->getRightsManager(); 
		$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_READ);//чтение 
		//$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_EDIT);//изменение 
		//$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_ADD);//добавление 
		//$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_FULL);//полные права 
             
		$newFolder = $folder->addSubFolder( 
			array( 'NAME' => 'New folder',  'CREATED_BY' => 1), 
			array( 
				array( 
					'ACCESS_CODE' => 'U10', // для пользователя с ID=10 выдадутся выбранные права
					'TASK_ID' => $accessTaskId, 
				), 
			) 
		); 
	}

Отключение прав на папку. (Доступно с версии 17.0.2 модуля Диск.)

<?php 
	if ($folder) 
	{ 
		$rightsManager = \Bitrix\Disk\Driver::getInstance()->getRightsManager(); 
		$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_READ);//чтение 
		//$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_EDIT);//изменение 
		//$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_ADD);//добавление 
		//$accessTaskId = $rightsManager->getTaskIdByName($rightsManager::TASK_FULL);//полные права 
             
		$newFolder = $folder->addSubFolder( 
			array( 'NAME' => 'New folder',  'CREATED_BY' => 1), 
			array( 
				array( 
					‘NEGATIVE' => true, 
					'ACCESS_CODE' => 'U10', 
					'TASK_ID' => $accessTaskId, 
				), 
			) 
		); 
	}

Загрузить файл в папку.

<?php 
if (\Bitrix\Main\Loader::includeModule('disk')) 
{ 
	$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1); 
	if ($storage) 
	{ 
		$folder = $storage->getChild( 
			array( 
				'=NAME' => 'New folder',  
				'TYPE' => \Bitrix\Disk\Internals\FolderTable::TYPE_FOLDER 
			) 
		); 
	if ($folder) 
	{ 
		$fileArray = \CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT'].'/test.jpg'); 
		$file = $folder->uploadFile($fileArray, array( 
			'CREATED_BY' => 1 
		)); 
	} 
	} 
}

Загрузка файла в корневую папку.

if (\Bitrix\Main\Loader::includeModule('disk')) 
{ 
	$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1); 
	if ($storage) 
	{ 
		$folder = $storage->getRootObject(); 
		$fileArray = \CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT'].'/test.jpg');  
		$file = $folder->uploadFile($fileArray, array(  
			'CREATED_BY' => 1  
		));  
	} 
}

Высокоуровневая работа с объектом файла.

<?php 
$newFile->markDeleted($deletedBy); 
$newFile->delete($deletedBy);

Поиск файла для работы с ним. Работать с файлом можно только перейдя в папку.

<?php 
if (\Bitrix\Main\Loader::includeModule('disk')) 
{ 
	$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1); 
	if ($storage) 
	{ 
		$folder = $storage->getRootObject(); 
		$file = $folder->getChild( 
			array( 
				'=NAME' => 'test.jpg',  
				'TYPE' => \Bitrix\Disk\Internals\FileTable::TYPE_FILE 
			) 
		); 
		if ($file) 
		{ 
			// 
		} 
	} 
} 

Получение ссылки на файл на портале.

<?php 
if ($file) 
{ 
		$urlManager = \Bitrix\Disk\Driver::getInstance()->getUrlManager(); 
		echo $urlManager->getPathFileDetail($file); 
}

Получение публичной ссылки

<?php 
if ($file) 
{ 
	$urlManager = \Bitrix\Disk\Driver::getInstance()->getUrlManager(); 
	$extLink = $file->addExternalLink( 
		array( 
			'CREATED_BY' => 1, 
			'TYPE' => \Bitrix\Disk\Internals\ExternalLinkTable::TYPE_MANUAL, 
		) 
	); 
	$extLinkUrl = $urlManager->getShortUrlExternalLink( 
		array( 
			'hash' => $extLink->getHash(), 
			'action' => 'default', 
		), 
		true 
	); 
	echo $extLink->getHash().'<br>'; 
	echo $extLinkUrl; 
}

Получение физического файла

<?php 
if ($file) 
{ 
	//получение айди физического файла 
	echo $file->getFileId(); 
	//работаем с ним 
 	   CFile::ViewByUser($file->getFileId(), array('force_download' => true)); 
}

Работа с файлами

<?php 
//загрузка новой версии файла 
if ($file) 
{ 
	$fileArray = \CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT'].'/test.jpg'); 
	$newVersion = $file->uploadVersion($fileArray, 1);//файл, ID пользователя 
// если при загрузке от одного пользователя двух версий файла с одним именем происходит менее 300 секунд - файлы сливаются.
} 

//перемещение файла в другую папку 
if ($file) 
{ 
	$file->moveTo($folder, $movedBy);//объект папки, пользователь 
}

Получение физического файла (для загрузки, например)

<?php 
if ($file) 
{ 
	//получение айди физического файла 
	echo $file->getFileId(); 
	//работаем с ним 
	CFile::ViewByUser($file->getFileId(), array('force_download' => true)); 
}

Проверка объекта и вывод ошибок

<?php 
if ($folder) 
{ 
	$folder->rename('Reports.backup'); 
} 
else 
{ 
	var_dump($folder->getErrors()); 
}

Работа с модулем допустима только высокоуровневыми методами.

<?php 
//нельзя 
FolderTable::update(); 

//следует 
$folder->rename(‘New folder 2’);


Пользовательские комментарии

Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2025, «1С-Битрикс», 2025
Наверх