DXP-0002: HTTP File Upload

DXP-0002 добавляет функциональность загрузки файлов в DMconnect при помощи стандарта HTTP.

Описание:
Когда пользователь выбирает файл для отправки, клиент особым образом обращается к серверу и загружает туда этот файл.

Сервер принимает файл, сохраняет его у себя и возвращает клиенту уникальную ссылку на этот файл, после этого клиент просто отправляет эту ссылку как обычное сообщение.

При этом скачать файл можно будет даже при помощи браузера, однако файл ограничен сроком хранения в сутки (срок может варьироваться в зависимости от сервера).

Доступные команды:
  • /http_file_upload-info — информация о сервере загрузки файлов. Команда вернёт сообщение вида:
    HTTP upload endpoint: http://<ХОСТ>:<ПОРТ>/upload
    Download URL: http://<ХОСТ>:<ПОРТ>/file/<ID>/<filename>
    Retention (TTL): <ВРЕМЯ ДОСТУПНОСТИ ФАЙЛА> seconds.
    Max file size: <МАКСИМАЛЬНЫЙ РАЗМЕР ФАЙЛА> bytes.
Работа по HTTP:
DXP-0002 реализует небольшой HTTP-сервер, предназначенный для загрузки и выгрузки файлов.

Чтобы загрузить файл, клиенту нужно обратиться по этому адресу:
http://<ХОСТ>:<ПОРТ>/upload
C методом POST и типом данных multipart/form-data.

После получения запроса сервер:
  1. Проверяет размер файла и тип запроса.
  2. Сохраняет файл во внутреннюю папку uploads/ с уникальным идентификатором.
  3. Создаёт временную ссылку для скачивания.
  4. Возвращает клиенту JSON-ответ с информацией о файле и ссылкой, например:
    {
      "status": "ok",
      "id": "<ID>",
      "filename": "<ИМЯ ФАЙЛА>",
      "size": <РАЗМЕР ЗАГРУЖЕННОГО ФАЙЛА В БАЙТАХ>,
      "url": "http://<ХОСТ>:<ПОРТ>/file/<ID>/<ИМЯ ФАЙЛА>"
    }

Клиент, получив ссылку, просто отправляет её в виде обычного текстового сообщения, чтобы другие пользователи могли скачать файл.

Любой пользователь (или браузер) может перейти по ссылке вида:
http://<ХОСТ>:<ПОРТ>/file/<ID>/<ИМЯ ФАЙЛА>
И скачать файл напрямую.

Передача осуществляется стандартным методом GET — сервер отвечает заголовками Content-Type и Content-Disposition, чтобы браузер корректно загрузил файл.

Файлы хранятся ограниченное время (по умолчанию — 24 часа).

<< Назад к списку расширений

© 2025 BitByByte.