Установка значения бинарного свойства
Пример показывает, как загрузить файл и установить его значением бинарного свойства элемента
средствами клиентской библиотеки Ascon.Polynom.Web.Api.Client.
Проект — Samples.WebApi.SetBinaryPropertyValue.
Требования
- .NET 8.
- Запущенный web-сервер ПОЛИНОМ:MDM с доступным хранилищем.
- Пакет
Ascon.Polynom.Web.Api.Clientиз локального фида (подключается автоматически).
Алгоритм
- Авторизоваться в web-API.
- Загрузить файл во временное хранилище web-сервера.
- Задать элемент-владелец свойств.
- Задать бинарное свойство.
- Сформировать и отправить запрос на установку значения.
- Выйти из сессии.
Авторизация
Авторизация выполняется хелпером PolynomClientSession поверх
AuthorizationService.
Подробно — в разделе
Авторизация в C# через клиентскую библиотеку.
Реализация
Файл загружается методом UploadBinaryPropertyValue сервиса
PropertyOwnerApiClient.
Значение устанавливается методом SetPropertyValues с моделью
SetPropertyValuesRequest.
using Ascon.Polynom.Web.Api.Client.Enums;
using Samples.WebApi.Common.Services;
// Клиентский временный идентификатор значения, связывающий значение и его описание.
const int newPropertyValueId = 170;
using var session = await PolynomClientSession.CreateAsync(cancellationToken);
// Путь к загружаемому файлу и идентификаторы владельца и определения свойства.
var filePath = "C:\\Docs\\specification.pdf";
var propertyOwnerId = 5;
var propertyDefinitionId = 42;
string? temporaryFileName;
await using (FileStream fileStream = File.OpenRead(filePath))
{
temporaryFileName = await session.Factory.CreatePropertyOwnerApiClient()
.UploadBinaryPropertyValue(fileStream, cancellationToken);
}
var request = new SetPropertyValuesRequest
{
Owner = new IdentifiableObject
{
ObjectId = propertyOwnerId,
TypeId = IdentifiableObjectType.Element
},
Values = new AblePropertyValuesRequest
{
BinaryProperties = new List<IBinaryPropertyValueRequest>
{
new BinaryPropertyValueRequest
{
Value = temporaryFileName ?? string.Empty,
ObjectId = newPropertyValueId,
TypeId = IdentifiableObjectType.BinaryPropertyValue
}
}
},
Properties = new List<IPropertyValueItem>
{
new PropertyValueItem
{
Value = new IdentifiableObject
{
ObjectId = newPropertyValueId,
TypeId = IdentifiableObjectType.BinaryPropertyValue
},
Definition = new IdentifiableObject
{
ObjectId = propertyDefinitionId,
TypeId = IdentifiableObjectType.BinaryPropertyDefinition
},
EvaluationMode = EvaluationMode.None
}
}
};
await session.Factory.CreatePropertyOwnerApiClient().SetPropertyValues(request, cancellationToken);
await session.SignOutAsync(cancellationToken);
Используемые методы библиотеки
| Сервис | Метод | Назначение |
|---|---|---|
PropertyOwnerApiClient |
UploadBinaryPropertyValue(Stream, CancellationToken) |
Загрузка файла во временное хранилище |
PropertyOwnerApiClient |
SetPropertyValues(SetPropertyValuesRequest, CancellationToken) |
Установка значения бинарного свойства |
Результат
Указанное значение присваивается бинарному свойству элемента-владельца свойств.
Возможные ошибки
- Файл не найден — проверьте путь к загружаемому файлу.
- Определение не найдено — проверьте идентификатор определения бинарного свойства.
- Сессия истекла — библиотека обновит токен и повторит запрос; при неудаче требуется повторный вход.
Ссылки
Пример-приложение в составе SDK: SDK/Web/Samples/Server/Samples.WebApi.SetBinaryPropertyValue.