Table of Contents

Получение ссылки на файл документа

Пример показывает, как получить имя временного файла для скачивания файла документа средствами клиентской библиотеки Ascon.Polynom.Web.Api.Client. Проект — Samples.WebApi.GetFileForDocument.

Требования

  • .NET 8.
  • Запущенный web-сервер ПОЛИНОМ:MDM с доступным хранилищем.
  • Пакет Ascon.Polynom.Web.Api.Client из локального фида (подключается автоматически).

Алгоритм

  1. Авторизоваться в web-API.
  2. Задать идентификатор файла.
  3. Получить имя временного файла для скачивания.
  4. Использовать имя для доступа к файлу.
  5. Выйти из сессии.

Авторизация

Авторизация выполняется хелпером PolynomClientSession поверх AuthorizationService. Подробно — в разделе Авторизация в C# через клиентскую библиотеку.

Реализация

Имя временного файла возвращает метод GetNameById сервиса FileApiClient с моделью GetByIdRequest.

using Ascon.Polynom.Web.Api.Client.Enums;

using Samples.WebApi.Common.Services;

using var session = await PolynomClientSession.CreateAsync(cancellationToken);

// Идентификатор файла документа.
var fileId = 10;

var temporaryFileName = await session.Factory.CreateFileApiClient().GetNameById(new GetByIdRequest
{
    ObjectId = fileId,
    TypeId = IdentifiableObjectType.File
}, cancellationToken);

// Имя указывает на файл во временном хранилище web-сервера; по нему формируется ссылка скачивания.
if (string.IsNullOrEmpty(temporaryFileName))
    throw new InvalidOperationException($"Файл с идентификатором {fileId} не найден.");

await session.SignOutAsync(cancellationToken);

Используемые методы библиотеки

Сервис Метод Назначение
FileApiClient GetNameById(GetByIdRequest, CancellationToken) Имя временного файла для скачивания

Результат

temporaryFileName — имя файла в каталоге %ProgramData%\ASCON\Polynom\WebServer\Data\Files\, по которому web-сервер отдаёт содержимое файла.

Возможные ошибки

  • Некорректный идентификатор — задайте числовой идентификатор файла.
  • Файл не найден — ответ 404 Not Found либо пустое имя файла.
  • Сессия истекла — библиотека обновит токен и повторит запрос; при неудаче требуется повторный вход.

Ссылки

Пример-приложение в составе SDK: SDK/Web/Samples/Server/Samples.WebApi.GetFileForDocument.