Main Content

マルチパート フォーム メッセージの送信

次のコードは、PUT メッセージで 1 つのファイルを送信します。

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/mixed" 型ではなく "multipart/form-data" 型であると想定します。マルチパート フォームを使用してファイルを送信するには、MultipartFormProvider を使用します。このプロバイダーでは、各パートが正しいコントロールと関連付けられるように、ユーザーがフォームの各種フィールドのコントロール名を知っている必要があります。たとえば、複数ファイルを受け入れる "files" と 1 つのみのファイルを受け入れる "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"));