exponenta event banner

Отправить многопартовые сообщения формы

Следующий код отправляет один файл в сообщении PUT.

import matlab.net.http.*
import matlab.net.http.field.*
import matlab.net.http.io.*
provider = FileProvider('dir/imageFile.jpg');
req = RequestMessage(PUT,[],provider);
resp = req.send(url);

Поставщик устанавливает соответствующее поле заголовка Content-Type в сообщении запроса на тип файла, полученный из расширения имени файла, и добавляет поле Content-Disposition с именем файла. В этом примере значения: "image/jpeg" с именем файла "imageFile.jpg".

Как загрузить несколько файлов в "multipart/mixed" сообщение, возможно, различных типов, создать массив FileProviders путем указания массива имен файлов и использования этого массива в качестве делегата MultipartProvider. В следующем коде каждый заголовок многопутевого сообщения содержит поле Content-Type и поле Content-Disposition с атрибутом имени файла, определяющим имя файла.

url = "www.somewebsite.com";
provider = MultipartProvider(FileProvider(["image1.jpg", "file1.txt"]));
req = RequestMessage(PUT, [], provider);
resp = req.send(url);

На практике большинство серверов, принимающих многопартовый контент, ожидают, что он будет иметь тип "multipart/form-data", не "multipart/mixed". Для отправки файлов с помощью многопартовых форм используйте MultipartFormProvider. Этот поставщик требует знать имена элементов управления для различных полей формы, чтобы каждая деталь была связана с правильным элементом управления. Например, чтобы отправить форму с элементами управления под названием "files" и "text", где первый принимает несколько файлов, а второй принимает только один, создайте провайдера на основе следующего кода:

provider = MultipartFormProvider("files", FileProvider(["image1.jpg", "file1.txt"]),...
    "text", FileProvider("file1.txt"));

Если серверу требуется несколько файлов, указанных с помощью вложенного формата, используйте следующий шаблон кода:

provider = MultipartFormProvider("files", MultipartProvider(FileProvider(["image1.jpg", "file1.txt"])),...
    "text", FileProvider("file1.txt"));