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