Получение ссылки на файл документа
Пример показывает, как получить имя временного файла для скачивания файла документа средствами
клиентской библиотеки Ascon.Polynom.Web.Api.Client. Проект — Samples.WebApi.GetFileForDocument.
Требования
- .NET 8.
- Запущенный web-сервер ПОЛИНОМ:MDM с доступным хранилищем.
- Пакет
Ascon.Polynom.Web.Api.Clientиз локального фида (подключается автоматически).
Алгоритм
- Авторизоваться в web-API.
- Задать идентификатор файла.
- Получить имя временного файла для скачивания.
- Использовать имя для доступа к файлу.
- Выйти из сессии.
Авторизация
Авторизация выполняется хелпером 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.