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