Объектный тип HTTP_ПОЛЕ_ФОРМЫ
Тип HTTP_ПОЛЕ_ФОРМЫ предназначен описания поля формы по аналогии с параметром curl --form. Используется в методе ЗАПРОС_ФАЙЛ объектного типа HTTP.
Поля
| Тип | Поле | Описание | Значение по умолчанию |
|---|---|---|---|
| СТРОКА | имя | Имя параметра формы. | |
| СТРОКА | значение | Значение параметра формы. Строки передаются в кодировке UTF-8. Для поддержки национальных букв требуется заполнения поля encoder. Если параметр является файлом, то задает имя файла на стороне сервера (аналог параметра filename в команде curl --form). | |
| СТРОКА | файл | Если значение является пустой строкой, то это обозначает обычный параметр формы, значение которого указано в поле значение. Для обозначение вложенной группы файлов в этом поле необходимо указать "*". Для загрузки файла указывается его имя в рабочей папке или полный путь на локальном компьютере. | |
| СТРОКА | encoder | Способ кодирования данных. Аналог параметра encoder в команде curl --form. Если указана пустая строка, то данные помещаются в http запрос в том виде, как они заданы.
Поддерживаются следующие типы кодирования:
|
|
| СТРОКА | content_type | Позволяет явно указать тип содержимого для отдельного поля. Аналог параметра type в команде curl --form. При загрузке файлов curl пытается автоматически определить тип содержимого по известным расширениям файлов. | |
| СТРОКА: @[СТРОКА] | заголовки | Дополнительные заголовки HTTP для отдельного поля. Аналог параметра headers в команде curl --form. | |
| HTTP_ПОЛЕ_ФОРМЫ: @[] | поля | Вложенные поля для отправки группы файлов. Используется только при указании значения поля файл как "*". |
Пример 1
Перадача нескольких простых параметров формы и одного файла.
ВЫЧИСЛИТЬ
ПЕРЕМ HTTP: запрос
запрос.url = "http://example.com"
запрос.отладка = ДА
ПЕРЕМ& п1 = запрос.поля_формы[1]
п1.имя = "ascii_text"
п1.значение = "Hello, World!" // ASCII текст без кодирования
ПЕРЕМ& п2 = запрос.поля_формы[2]
п2.имя = "localized_text"
п2.значение = "Здравствуй, Мир!"
п2.encoder = "base64" // Русский текст - UTF-8 кодируется в base64
ПЕРЕМ& п3 = запрос.поля_формы[3]
п3.имя = "picture"
п3.значение = "pic.jpg" // имя файла на сервере
п3.файл = "D:\Users\developer\Pictures\Unnamed.jpg" // загрузка данных из файла
п3.encoder = "base64" // двоичные данные кодируются в base64
ПЕРЕМ рез = запрос.ЗАПРОС_ФАЙЛ("*", "resp.txt", "POST")
ОТЛАДКА(рез)
КОНЕЦ
Соответствует следующей команде curl:
curl --location --request POST --verbose http://example.com --form "ascii_text=Hello, World!" --form "localized_text=Здравствуй, Мир!;encoder=base64" --form "picture=@D:\Users\developer\Pictures\Unnamed.jpg;filename=pic.jpg;encoder=base64" --output resp.txt
Пример 2
Перадача нескольких файлов в одном параметре. Для файлов создается вложенный раздел multipart/mixed с элементами Content-Disposition: attachment.
ВЫЧИСЛИТЬ
ПЕРЕМ HTTP: запрос
запрос.url = "http://example.com"
запрос.отладка = ДА
ПЕРЕМ& п1 = запрос.поля_формы[1]
п1.имя = "alpha"
п1.значение = "Hello, World!" // простое поле формы
ПЕРЕМ& п2 = запрос.поля_формы[2]
п2.имя = "cluster"
п2.файл = "*" // группа файлов
ПЕРЕМ& пп1 = п2.поля[1]
пп1.значение = "alpha.txt"
пп1.файл = "D:\Users\developer\Documents\a.txt"
ПЕРЕМ& пп2 = п2.поля[1]
пп2.значение = "beta.txt"
пп2.файл = "D:\Users\developer\Documents\b.txt"
ПЕРЕМ рез = запрос.ЗАПРОС_ФАЙЛ("*", "resp.txt", "POST")
ОТЛАДКА(рез)
КОНЕЦ
Соответствует следующей команде curl:
curl --location --request POST --verbose http://example.com --form "alpha=Hello, World!" --form "cluster=@D:\Users\developer\Documents\a.txt;filename=alpha.txt,D:\Users\developer\Documents\b.txt;filename=beta.txt" --output resp.txt