Диск
\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 ) ); } }
Поиск подпапки и работа с ней. (Доступно с версии 17.0.2 модуля Диск)
<?php if (\Bitrix\Main\Loader::includeModule('disk')) { $storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId(1); if ($storage) { /* как-то получаем папку */ $folder = $folder->getChild( array( '=NAME' => 'New folder', 'TYPE' => \Bitrix\Disk\Internals\FolderTable::TYPE_FOLDER ) ); } }
Поиск корневой папки. (Доступно с версии 17.0.2 модуля Диск)
<?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 ) ); } }
Создание подпапки в папке
<?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’);
Сообщение не промодерировано, возможны ошибки и неточности.
|
||||||||||
У одного файла в системе бывают как минимум 3 разных вида ID:
1)ID самого файла (обычно это значение самое большое) 2)ID файла на диске (обычно это значение поменьше) 3)ID файла как вложения, например прикрепленный файл в задаче или в комментарии задачи (обычно самое маленькое значение) Разным методам при вызове надо передавать разные ID, и гет-методы также могут вернуть разные ID Как конвертировать одно значение в другое:
В примерах на этой странице руководства используется объект файл, его можно получить через ID файла на диске:
| ||||||||||
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
что бы удалить директорию
| ||
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.