Сохранение на FTP-сервер
В этой статье рассмотрим способ отправки отчёта на FTP сервер. Инструкции о том как работать с задачами описаны в разделе Общие сведения.
Приступая к работе
Вам понадобятся следующие инструменты и возможности:
Знания по использованию API key в МоиОтчеты Облако.
В этой статье будет пропущена дополнительная информация по аутентификации и авторизации.
Редактор C# кода или текстовый редактор, например Visual Studio Code.
Шаблон отчёта.
Его можно подготовить с помощью бесплатной программы FastReport Community Designer.
Активная подписка для МоиОтчеты Облако.
Доступ в интернет.
Настроенный и доступный FTP сервер.
Обратите внимание! Это руководство рассчитано, что вы уже знаете, как разработать своё приложение на языке программирования C#.
Обратите внимание! Пункты выше описывают рекомендуемые инструменты.
Обратите внимание! Данное руководство предполагает, что у вас есть опыт настройки и конфигурации FTP сервера для принятия файлов от внешних источников.
Создание задачи
Рассмотрим создание задачи отправки шаблона на FTP-сервер:
// Инициализация объекта
CreateFTPUploadTaskVM ftpUploadTaskVM = new CreateFTPUploadTaskVM
{
Name = "Задача отправки на FTP",
InputFile = new InputFileVM
{
EntityId = "{идентификатор шаблона}",
Type = FileKind.Template
},
FtpHost = "{адрес FTP-сервера}",
FtpPort = 21,
FtpUsername = "{имя пользователя FTP-сервера}",
FtpPassword = "{пароль}",
UseSFTP = false,
DestinationFolder = "{/путь_к_папке/}",
Archive = false,
ArchiveName = "Имя архива",
SubscriptionId = "{идентификатор рабочего пространства}"
};
// Создание задачи
TaskBaseVM ftpUploadTask = await tasksClient.CreateTaskAsync(ftpUploadTaskVM);
// Запуск задачи по идентификатору
await tasksClient.RunTaskByIdAsync(ftpUploadTask.Id);
В поля EntityId и SubscriptionId следует записывать реальные идентификаторы объектов. Иначе задача будет прервана с ошибкой.
Выполнение задачи из тела запроса
// Запуск задачи из тела запроса
await tasksClient.RunTaskAsync(new RunFTPUploadTaskVM
{
InputFile = new RunInputFileVM
{
EntityId = "{идентификатор шаблона}",
Type = FileKind.Template
},
FtpHost = "{адрес FTP-сервера}",
FtpPort = 21,
FtpUsername = "{имя пользователя FTP-сервера}",
FtpPassword = "{пароль}",
UseSFTP = false,
DestinationFolder = "{/путь_к_папке/}",
Archive = false,
ArchiveName = "Архивированный шаблон",
SubscriptionId = "{идентификатор рабочего пространства}"
});
Обратите внимание! В этом случае отправка на FTP будет выполнена непосредственно этим запросом и задача не будет сохранена в базе данных.
Обновление задачи по идентификатору
await tasksClient.UpdateTaskAsync("{идентификатор старой задачи}", new UpdateFTPUploadTaskVM()
{
InputFile = new RunInputFileVM
{
EntityId = "{обновлённый идентификатор шаблона}",
Type = FileKind.Template
},
FtpHost = "{Обновлённый адрес FTP-сервера}",
FtpPort = 21,
FtpUsername = "{Обновлённое имя пользователя FTP-сервера}",
FtpPassword = "{пароль}",
UseSFTP = false,
DestinationFolder = "/обновлённый_путь_к_папке",
Archive = false,
ArchiveName = "Обновлённое имя архива"
});