Type parameters
Hierarchy
- BaseItem<FileData>
-
FileItemRef
- FileItem
Properties
Readonly code
Код приложения цели ссылки (код приложения).
Readonly data
Значения полей объекта.
Readonly fields
Описание полей объекта.
Readonly id
Идентификатор цели ссылки.
Readonly namespace
Пространство имен цели ссылки (код раздела приложения).
Methods
addVersion
-
Метод создает новую версию файла.
Метод позволяет обновить содержимое файла на диске, не создавая новый файл. Созданная версия попадает в историю файла. Метод необходимо использовать, когда тело файла может быть получено из разных источников или сгенерировано при выполнении скрипта. Поле
comment
служит описанием добавляемой версии.В примере показано, как можно добавить версию файла после загрузки с внешнего ресурса. В качестве коментария можно указать, что файл получен с внешнего ресурса. Контекст содержит:
downloadUrl
— строка, хранящая URL для загрузки файла;newName
— новое название файла;file
— файл, хранящийся на диске.
const fileResponse = await fetch(Context.data.downloadUrl); const fileContent = await fileResponse.arrayBuffer(); const newName = Context.data.fileName; await Context.data.file.addVersion(newName, fileContent, 'Файл загружен с внешнего ресурса');
Parameters
-
name: string
-
body: ArrayBuffer
-
Optional comment: undefined | string
Returns Promise<void>
addVersionFromLink
-
Метод создает версию, загружая файл по ссылке.
Сокращенная версия метода FileItem.addVersion использует ссылку загрузки для создания новой версии файла. С помощью ссылки загружается содержимое файла. Оно используется для создания новой версии. При использовании метода можно указать комментарий к добавляемой версии файла.
В примере показано, как можно добавить версию файла, используя ссылку для загрузки. Контекст содержит:
downloadUrl
— строка, хранящая URL для загрузки файла;newName
— новое название файла;file
— файл, хранящийся на диске.
const newName = Context.data.fileName; await Context.data.file.addVersionFromLink(newName, Context.data.downloadUrl);
Parameters
-
name: string
-
url: string
-
Optional comment: undefined | string
Returns Promise<void>
delete
-
Удаление файла.
Метод позволяет переместить текущий файл в корзину для удаления.
// Пример удаления всех файлов, созданных пользователем (some user_id); const userID = '1a8286d3-a222-4b8b-a860-84f6505a708a'; const searchFiles = await System.files.search(). where(file => file.__createdBy.eq(userID)). all(); for (let i = 0; i < searchFiles.length; i += 1) { await searchFiles[i].delete(); }
Returns Promise<void>
fetch
-
Запрос полных данных объекта-ссылки.
Returns Promise<FileItem>
getDownloadUrl
-
Метод получает ссылку на загрузку содержимого файла.
Полученная ссылка возвращает содержимое файла. По такой ссылке загрузку могут выполнить все пользователи, в том числе и анонимные. Ссылка на загрузку доступна в течение одного часа. Тип вложения может быть
attachment
илиinline
. По умолчанию параметрdispositionType
имеет значениеattachment
.const url = await file.getDownloadUrl();
Parameters
-
Optional dispositionType: DispositionType
Returns Promise<string>
-
getFileMD5Hash
-
Метод получает md5-хеш файла.
В примере контекст содержит
file
— файл из системы.const hash = await file.getFileMD5Hash();
Returns Promise<string>
getPermissions
-
Метод получает права доступа к файлу.
После удачного выполнения запроса прав в ответе будет получен объект TPermissions. Полученный объект можно модифицировать или анализировать для различных проверок доступа.
const perm = await file.getPermissions();
Returns Promise<TPermissions>
getStaticDownloadUrl
-
Метод получает постоянную ссылку на загрузку содержимого файла.
Полученная ссылка возвращает редирект на ссылку с содержимым файла. По такой ссылке загрузку могут выполнить только авторизованные пользователи при наличии соответствующих прав. Тип вложения может быть
attachment
илиinline
. По умолчанию параметрdispositionType
имеет значениеattachment
. Данные ссылки бессрочные и существуют, пока файл не удалён в системе.// Получаем ID файла const fileUUID = Context.data.fileID; if(!fileUUID) { return; } // Ищем файл const file = await System.files.search().where(x => x.__id.eq(fileUUID)).first(); if(!file) { return; } // Получаем постоянную ссылку на файл const url = file.getStaticDownloadUrl();
Parameters
-
Optional dispositionType: DispositionType
Returns string
-
getVersions
-
Метод получает список версий файла.
В примере показан поиск первой версии файла. Идентификатор файла необходимо получить из контекста. Для получения всех версий используется параметр
offset
. Версии выбираются в порядке убывания порядкового номера, то есть от самой свежей к более старым. Первая версия имеет порядковый номер 1.// Получаем ID файла const fileUUID = Context.data.fileID; if(!fileUUID) { return; } // Ищем файл const file = await System.files.search().where(x => x.__id.eq(fileUUID)).first(); if(!file) { return; } // Получаем все версии файлов. Если версий нет, то возвращаем ошибку let allFileVersions: FileVersionItem[] = []; let verCount = 0; let offset = 0; const limit = 20; do { const versions = await file.getVersions(offset, limit); verCount = versions.length; offset = offset + verCount; allFileVersions.push(...versions); } while (verCount === limit) if(allFileVersions.length === 0) { throw new Error("У файла нет версий"); } const firstVersion = allFileVersions.find(ver => ver.version === 1); // Получаем тело файла const url = await firstVersion.getDownloadUrl(); const content = fetch(url);
Parameters
-
Optional offset: undefined | number
-
Optional limit: undefined | number
Returns Promise<FileVersionItem[]>
-
hasPermission
-
Метод проверяет наличие права доступа PermissionType.
Метод позволяет легко проверить наличие возможности на выполнение операции PermissionType с файлом. После использования метод вернет флаг о результате. Если значение флага
true
, то пользователь может выполнять запрошенную операцию с файлом. Также можно проверять доступ для элементов оргструктуры.const user = Context.data.__createdBy; const canUpdate = await file.hasPermission(user, PermissionType.UPDATE);
Parameters
-
group: TPermissionOrgunit
-
type: PermissionType
Returns Promise<boolean>
-
move
-
Перемещение файла.
Метод позволяет переместить файл в указанную директорию.
// Пример поиска всех файлов форматов .doc и .docx в директории и перенесения их в новую директорию const directoryID = "0520723d-5e32-4d37-8eca-175853a2ec88"; const searchFiles = await System.files.search(). where(file => file.directory.eq(directoryID)). all(); // Создадим новую директорию const newDirectory = await System.directories.create("Документы", directoryID); searchFiles!.forEach(async file => { let format = file.data.__name.split('.').reverse()[0]; if (format=='doc' || format=='docx') { await file.move(newDirectory.data.__id); }; });
Parameters
-
directoryID: string
Returns Promise<void>
-
normalize
-
Удаление дублирующихся данных в массивах.
Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).
Этот метод, например, можно вызвать после массового изменения данных в объекте.
const app1 = await Context.data.app1.fetch(); const app2 = await Context.data.app2.fetch(); app1.data.executors.push(app2.data.executors); app1.normalize(); // Далее перебираем элементы нового массива app1.data.executors.forEach( ... );
Returns void
rename
-
Переименование файла.
Метод позволяет изменить имя текущего файла.
// Пример переименования файла, используемого в контексте const fileUUID = Context.data.fileID; if(!fileUUID) { return; } // Поиск файла const file = await System.files.search().where(x => x.__id.eq(fileUUID)).first(); if(!file) { return; } await file.rename('Новое имя.txt');
Parameters
-
newName: string
Returns Promise<void>
-
setPermissions
-
Метод устанавливает список прав на файл.
Метод требуется использовать, когда необходимо изменить права на доступ к файлу, добавив или удалив права доступа для пользователя, группы, элемента оргструктуры. Для добавления новых прав доступа необходимо использовать объект TPermissionValue, а для выдачи прав на конкретные операции — PermissionType. После создания нового объекта TPermissions необходимо использовать данный метод для сохранения новых прав доступа.
const user = Context.data.__createdBy; const permissions = new Permissions([ new PermissionValue(user, [PermissionType.DELETE, PermissionType.READ]), ]); await file.setPermissions(perms);
Parameters
-
perms: TPermissions
Returns Promise<void>
-
subscribe
-
Метод подписывает пользователей на файл.
Создание подписки на файл позволит пользователям получать оповещения об изменении данных файла созданиях его версий и других событиях.
Parameters
-
Rest ...users: TUser[]
Пользователи для подписки.
Returns Promise<void>
-
unsubscribe
-
Метод отписывает пользователей от файла.
Удаление подписки на файл позволяет прекратить получение оповещений об изменении файла.
Parameters
-
Rest ...users: TUser[]
Пользователи для отписки.
Returns Promise<void>
-
Файл
Объект предназначен для работы с файлами, позволяет выполнять операции над файлами, хранимыми на диске: получать ссылки для загрузки, сохранять и получать права доступа, подписываться на изменения и др.