Объект предназначен для работы с файлами, позволяет выполнять операции над файлами, хранимыми на диске: получать ссылки для загрузки, сохранять и получать права доступа, подписываться на изменения и др.

Type parameters

Hierarchy

Properties

Readonly code

code: string

Код приложения цели ссылки (код приложения).

Readonly data

data: Based<Partial<FileData>>

Значения полей объекта.

Readonly fields

fields: Readonly<object>

Описание полей объекта.

Readonly id

id: string

Идентификатор цели ссылки.

Readonly namespace

namespace: string

Пространство имен цели ссылки (код раздела приложения).

Methods

addVersion

  • addVersion(name: string, body: ArrayBuffer, comment?: undefined | string): Promise<void>
  • Метод создает новую версию файла.

    Метод позволяет обновить содержимое файла на диске, не создавая новый файл. Созданная версия попадает в историю файла. Метод необходимо использовать, когда тело файла может быть получено из разных источников или сгенерировано при выполнении скрипта. Поле 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

  • addVersionFromLink(name: string, url: string, comment?: undefined | string): Promise<void>
  • Метод создает версию, загружая файл по ссылке.

    Сокращенная версия метода 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

  • delete(): Promise<void>
  • Удаление файла.

    Метод позволяет переместить текущий файл в корзину для удаления.

        // Пример удаления всех файлов, созданных пользователем (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

    Returns Promise<string>

getFileMD5Hash

  • getFileMD5Hash(): Promise<string>
  • Метод получает 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

    Returns string

getVersions

  • getVersions(offset?: undefined | number, limit?: undefined | number): Promise<FileVersionItem[]>
  • Метод получает список версий файла.

    В примере показан поиск первой версии файла. Идентификатор файла необходимо получить из контекста. Для получения всех версий используется параметр 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

  • hasPermission(group: TPermissionOrgunit, type: PermissionType): Promise<boolean>
  • Метод проверяет наличие права доступа PermissionType.

    Метод позволяет легко проверить наличие возможности на выполнение операции PermissionType с файлом. После использования метод вернет флаг о результате. Если значение флага true, то пользователь может выполнять запрошенную операцию с файлом. Также можно проверять доступ для элементов оргструктуры.

    const user = Context.data.__createdBy;
    
    const canUpdate = await file.hasPermission(user, PermissionType.UPDATE);
    

    Parameters

    Returns Promise<boolean>

move

  • move(directoryID: string): Promise<void>
  • Перемещение файла.

    Метод позволяет переместить файл в указанную директорию.

        // Пример поиска всех файлов форматов .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

  • normalize(): void
  • Удаление дублирующихся данных в массивах.

    Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).

    Этот метод, например, можно вызвать после массового изменения данных в объекте.

    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

  • rename(newName: string): Promise<void>
  • Переименование файла.

    Метод позволяет изменить имя текущего файла.

      // Пример переименования файла, используемого в контексте
      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

    Returns Promise<void>

subscribe

  • subscribe(...users: TUser[]): Promise<void>
  • Метод подписывает пользователей на файл.

    Создание подписки на файл позволит пользователям получать оповещения об изменении данных файла созданиях его версий и других событиях.

    Parameters

    • Rest ...users: TUser[]

      Пользователи для подписки.

    Returns Promise<void>

unsubscribe

  • unsubscribe(...users: TUser[]): Promise<void>
  • Метод отписывает пользователей от файла.

    Удаление подписки на файл позволяет прекратить получение оповещений об изменении файла.

    Parameters

    • Rest ...users: TUser[]

      Пользователи для отписки.

    Returns Promise<void>