Войти

Пересылка вложений с использованием файлового хранилища

7. Пересылка вложений с использованием файлового хранилища

В СМЭВ предусмотрена возможность передачи файлов отдельно от СМЭВ документа, вложениями для которого они являются. Для этого используется Файловое хранилище СМЭВ. Использование Файлового хранилища обязательно, если суммарный объем СМЭВ заголовка и передаваемых вложений превышает 5 МБ (общий объем СМЭВ-заголовка не должен превышать 5МБ).

При передаче файлов вложений с использованием Файлового хранилища объем передаваемых файлов вложений не должен превышать 1 ГБ.

Квота файлового хранилища для информационной системы выбирается Участником самостоятельно при регистрации ИС в размере до 1 ГБ.

При необходимости установления квоты, превышающей 1 ГБ, Участнику требуется предоставить обоснованные расчёты.

При достижении установленной квоты отправитель сообщения получит ошибку «Квота на файловое хранилище для получателя превышена!».

Для увеличения / уменьшения установленной квоты необходимо направить отдельную заявку в адрес СТП СМЭВ с обоснованием причин изменений.

Загрузка файлов в ФХ осуществляется по протоколу FTP.

Для взаимодействия с FTP реализованы два метода:

  • Авторизация под анонимной учетной записью (Логин - anonymous);
  • Авторизация под личной учетной записью. Логин соответствует мнемонике информационной системы Участника взаимодействия, пароль устанавливается самостоятельно через ЛК УВ. Процедура описана в Руководстве пользователя ЛК УВ.

Диаграмма последовательности отправки СМЭВ документа с вложением на примере использования анонимной учетной записи (Рисунок 42).

При передаче файлов вложения через ФХ загрузка файлов вложения предшествует отправке СМЭВ документа, к которому относится вложение (Рисунок 42).

При получении доступа к ФХ через учетную запись anonymous участнику взаимодействия предоставляется возможность создать директории, предназначенные для передачи файлов вложений. Созданные для передачи файлов вложений директории недоступны для других участников взаимодействия. Для каждого из передаваемых через ФХ файлов ИС отправителя должна создать отдельную директорию, в качестве названия которой должен быть использован UUID, сгенерированный по алгоритму, аналогичному генерации UUID сообщения (см. п. 4.2 «Algorithms for Creating a Time-Based UUID» RFC 4122 https://datatracker.ietf.org/doc/html/rfc4122#section-4.2).

Передаваемые файлы вложений загружаются в индивидуальные директории на FTP сервере ФХ.

После загрузки файлов вложений ИС отправителя должна выполнить отключения от FTP сервера файлового хранилища.

40.jpg

Рисунок 42 – Процесс передачи файлов посредством ФХ.

Транспортная подсистема СМЭВ выполняет периодические проверки актуальности файлов, загруженных в файловое хранилище участниками взаимодействия. В рамках проверки актуальности выявляются и удаляются из ФХ все файлы, для которых справедливо следующее:

  • файл загружен в ФХ более чем 30 минут назад;
  • СМЭВ документ, имеющий ссылку на файл, не поступил в асинхронную обработку. 

Отправку СМЭВ документа, которому принадлежат загруженные файлы, необходимо осуществлять в течение 30 минут после загрузки файлов. Срок хранения, загруженного в файловое хранилище файла (до момента поступления в асинхронную обработку СМЭВ документа, содержащего ссылку на данный файл) составляет 30 минут.

Ответственность за своевременную отправку СМЭВ документов, которым соответствуют загруженные в ФХ файлы вложений возлагается на Участника взаимодействия (отправителя СМЭВ документа). При несвоевременной отправке СМЭВ документа, соответствующий ему файл вложения будет удален из ФХ, что приведет к ошибке асинхронной обработки СМЭВ документа с вложением, передаваемым через ФХ. Сообщение об ошибке помещается в очередь входящих ответов ИС УВ -  отправителя СМЭВ документа.

Если в течение указанного срока хранения загруженного файла в ФХ, СМЭВ документ, содержащий ссылку на файл, не отправлен в СМЭВ, требуется выполнить повторную загрузку файла вложения в ФХ.

При отправке СМЭВ документа, которому принадлежат загруженные файлы, UUID созданных папок с файлами указываются в XML сообщении в соответствующих тегах SenderProvidedRequestData (для запроса) и SenderProvidedResponseData (для ответа). Данные теги включают элемент RefAttachmentHeaderList, который описывается как лист значений.

Количество передаваемых вложений в сообщении ограничено. В случае превышения допустимого количества на стороне участника будет получено синхронное уведомление с текстом «SMEV-200:Количество ФТП-вложений превышает допустимое». Целевой лимит количества вложений указан в синхронном ответе в блоке PermittedTotalAttachmentSize. На текущий момент допустимый лимит – 150 вложений.

В рамках асинхронной обработки СМЭВ документа, содержащего ссылки на файлы вложений, загруженные в ФХ, для каждого из файлов выполняются:

  • проверка ЭП хэш отпечатка файла вложения, полученного в СМЭВ документе;
  • проверка наличия в ФХ директории, имя которой соответствует UUID, полученному в СМЭВ документе;
  • проверка соблюдения установленной квоты файлового хранилища;
  • проверка совпадения вычисленного хэш отпечатка файла с хэш отпечатком, полученным в СМЭВ документе;
  • перемещение файла в долговременное хранилище (в область доставки);
  • форматно–логический контроль файла вложения.

В случае если в рамках асинхронной обработки СМЭВ документа, содержащего ссылки на файлы вложений, на ФХ не удалось найти файл, указанный в СМЭВ документе, или размер передаваемого файла равен нулю, участнику будет направлено асинхронное уведомление с текстом «SMEV-201:Некорректная информация о фтп вложениях; message id».

Общий процесс получения СМЭВ документа с файлами в Файловом хранилище представлен на Рисунке 43.

41.png

Рисунок 43 – Процесс получения файлов посредством Файлового хранилища.

В составе входящего сообщения содержатся ссылки на пришедшие файлы - тег FSAttachmentsList, представляющий собой перечнь элементов FSAttachment значений типа FSAuthInfo, содержащих ссылку на файл (uuid), логин (UserName), пароль (Password), имя файла (FileName). В FileName передается значение вида /имя_файла, (например, /filename.txt) где «filename» – наименование передаваемого файла, txt – расширение. Для выгрузки файла на стороне ИС получателя необходимо сформировать запрос вида: 

ftp://логин:пароль@ имя_хоста_шарды:порт/имя_файла. 

В случае ошибок при выгрузке файла через проводник операционной системы необходимо использовать адрес вида: 

ftp://логин:пароль@ имя_хоста_шарды:порт/.

После доставки сообщения и при получении от ИС получателя подтверждения о получении сообщения СМЭВ очищает область доставки Файлового хранилища, доступ к доставленным файлам закрывается.

Срок хранения вложения в области доставки составляет 15 суток.

Авторизуйтесь, чтобы оставить комментарий к статье