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

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>

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

      Сдвиг относительно начального поиска. По умолчанию равен 0.

    • Optional limit: undefined | number

      Максимальное количество полученных записей. По умолчанию равно 10. Максимальное значение 10000.

    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

    • group: TPermissionOrgunit

      Группа или пользователь для проверки.

    • type: PermissionType

      Тип операции.

    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

      Идентификатор директории, в которую необходимо переместить файл. Необходимо передать UUID директории. В ином случае выдаётся ошибка.

    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

      Новое имя файла. Необходимо передать имя файла с указанием формата (newName.txt).

    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

  • 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>