Платформа A2v10 довідкова система
EN


Файли (files)

Об'єкт files описує команди роботи з файлами, що завантажуються, доступні в поточній кінцевій точці. Імена властивостей об'єкта являють собою імена команд. Кожна властивість являє собою об`єкт наступної структури:

Зазвичай використовується з елементом керування UploadFile. Команда задається у властивості Url елементу керування.


Властивості об'єкта

Ім'я Тип Опис
type enum Обов'язково. Тип операції з файлом:
parse Розбір файла. Якщо вказана модель, то файл зберігається в базі даних. Якщо модель прожня, результат розбору просто повертається клієнту. Необхідно вказати властивість parse. Для текстових файлів можна додатково вказати властивість locale.
Приклад імпорту даних.
sql Пряме зберігання в базі даних сирих даних файлу. Повинна бути вказана модель.
azureBlob Зберігання файлу в Azure Storage. Повинно бути обов'язково вказано властивість container. Ім'я джерела (рядку підключення) зазначається у властивості azureSource. Якщо не вказано, то дорівнює "AzureStorage".
clr Виклик методу .NET об'єкта. Необхідно вказати властивість clrType. Детальніше....
parse enum Обов'язково для операції parse. Формат файлу, що розбирається.
csv, dbf, xml Тип файлу для аналізу.
xlsx, excel Розбір файлів Microsoft Excel. Підтримується тільки формат .xlsx.
auto Автоматичне визначення формату в залежності від розширення файлу.
Приклад імпорту даних.
locale string Не обов'язково. Локаль для розбору файлів. Текстовий рядок, що представляє мову і, опціонально, країну. Наприклад: "uk", "uk-UA" для України. Використовується зокрема для розбору чисел (десятичний роздільник, роздільник тисяч). Якщо не вказана, використовується стандартний вид (крапка в якості десятичного роздільника).
source string Не обов'язково. Джерело даних. Якщо не вказано, береться з батьківського елементу.
schema string Не обов'язково. Ім'я sql-схеми. Якщо не вказано, береться з батьківського елементу.
model string Ім'я моделі. Якщо не вказано, береться з батьківського елементу. Якщо дорівнює пустому рядку, то модель не зберігається в базі даних, а просто повертається на клієнт.
container string Обов'язково для типу azureBlob. Ім'я контейнера в Azure Storage.
azureSource string Тільки для типу azureBlob. Джерело (ім'я рядку підключення) для Azure Storage. Якщо не вказано, то дорівнює "AzureStorage".
clrType string Обов'язково для типу clr. Рядок, що описує збірку і .NET тип.
async boolean Тільки для типу clr. Асинхронне виконання clr-команди.
parameters object Об'єкт, статичні параметри, які передаються в збережену процедуру оновлення моделі. Ім'я властивості є ім'ям параметра, значення - значенням параметра.
imageCompress object Керує стисканням зображень при завантаженні на сервер. Тільки для файлів JPEG.
quality Якість файлу (0..100). 0-мінімальна, 100-максимальна. Реальне значення 40-50 не призводить до помітного погіршення якості зображення.
threshold Мінімальне значення розміру файлу (в мегабайтах), для якого буде застосовуватися стискання. Якщо розмір файлу менше, він зберігається "як є".

Операція parse

Операція виконує розбір отриманого файлу (у відповідності до формату, вказаного у властивості parse) і представляє його у вигляді таблиці. Якщо вказана модель, то система намагається зберігти отриману таблицю в базі даних.

Збереження моделі виконується наступним чином:

  • Викликається процедура отримання метаданих ({source}: [{schema}].[{model}.Metadata]). Ця процедура повинна повернути один запис з описом однієї таблиці. Ім'я таблиці попередньо визначене - Rows.
  • Виконується пошук відповідності полів отриманого файлу і таблиці метаданих, та заповнюється відповідний табличний тип.
  • Викликається процедура оновлення ({source}: [{schema}].[{model}.Update]). Їй передається таблиця, отримана на попередньому кроці. Процедурі передаються наступні параметри:
    • Стандартні параметри (@TenantId, @UserId).
    • Параметри, передані в url.
    • Параметри з властивості parameters.
    • @Rows (readonly) - Табличний тип. Дані таблиці.
  • Модель, отримана в результаті виконання збереженої процедури просто повертається клієнту.

Якщо значення властивості model дорівнює пустому рядку (""), то жодних додаткових дій з результатом розбору файлу не виконується. Отримана таблиця просто повертається клієнту у вигляді об'єкта с єдиною властивістю Rows, що містить масив записів вихідного файлу.

Операція sql

Ця операція просто зберігає отриманий файл в базі даних у вигляді байтівого масива (тип vabinary(max)). Якщо задано параметр imageCompress, то файл (можливо) буде попередньо стиснений. Для цього викликається збережена процедура {source}: [{schema}].[{model}.Update]. Їй передаються наступні параметри (такі самі, як і у випадку збереження вкладень):

Ім'я Тип Опис
@UserId bigint Id поточного користувача.
@TenantId bigint Id тенанта (тільки в мультитенантному середовищі)
@Name nvarchar(255) Ім'я файлу (без шляху)
@Mime nvarchar(255) MIME -тип файлу
@Stream varbinary(max) Дані файлу (просто байти без перетворення)

Зверніть увагу, що імена параметрів фіксовані!

Операція clr

Операція типу clr викликає метод з типу, заданного властивістю clrType. Тип повинен реалізовувати інтерфейс IInvokeTarget. Детальніше....

В метод передається им'я, MIME-тип і потік (Stream) отриманого файла.