Объектный тип 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