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

Следующий код отправляет один файл в сообщении 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-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"));