matlab.net.http.io.MultipartFormProvider クラス
名前空間: matlab.net.http.io
スーパークラス: matlab.net.http.io.MultipartProvider
マルチパート/フォームデータ メッセージを送信する ContentProvider
説明
このプロバイダーを使用してマルチパート フォームをサーバーに送信します。マルチパート フォームは、一連のパートが含まれる 1 つのメッセージです。各パートは "コントロール名" とそのデータをもちます。データは、RequestMessage.Body.Data
または別の ContentProvider
で許可される任意の型にすることができます。
一部のサーバーでは、入れ子になったマルチパート/混合パート内に同じ名前で複数のパートを必要とします。入れ子にされたパートを送信するには、パートを MultipartProvider
内にラップします。たとえば、HTML 4.01 仕様書の 17 章の最後でフォーム データについて説明しているようにメッセージを送信するには、次のようにします。
fps = FileProvider(["file1.txt","file2.gif"]); % get array of providers mp = MultipartProvider(fps); formProvider = MultipartFormProvider("submit-name","Larry","files",mp); req = RequestMessage('put',[],formProvider); req.send(uri);
matlab.net.http.io.MultipartFormProvider
クラスは handle
クラスです。
作成
説明
provider = MultipartFormProvider(
は、1 つ以上の名前とパートのペアの引数で指定された Name,Part
)"multipart/form-data"
の内容を作成します。Part
は Name
とその内容を含むフォームデータです。Part
引数は他の ContentProvider
オブジェクトなど、MultipartProvider
でサポートされる任意のタイプにすることができます。
Part
が配列の場合、配列の各要素に対する Name,Part
の繰り返しと同等になります。たとえば、以下のステートメントは、
MultipartFormProvider("name",FileProvider(["file1" "file2"]))
以下と同等になります。
MultipartFormProvider("name",FileProvider("file1"),"name",FileProvider("file2"));
プロパティ
パブリック プロパティ
Names
— パート名
string
パート名。string として指定します。
属性:
GetAccess | public |
SetAccess | public |
Parts
— メッセージ本文のパーツ
cell 配列
メッセージ本文のパーツ。これらの 1 つ以上の値の cell 配列として指定します。
|
|
|
|
|
|
| 配列の各要素をパートとして扱います。cell 配列ではありません。 |
| このメソッドは |
その他のタイプ | タイプが前述したどのタイプにも一致せず、関数ハンドルでもない場合、 |
属性:
GetAccess | public |
SetAccess | public |
Dependent | true |
Header
— メッセージまたはパートのヘッダー フィールド
matlab.net.http.HeaderField.empty
(既定値) | matlab.net.http.HeaderField
メッセージまたはパートのヘッダー フィールド。1 つ以上の matlab.net.http.HeaderField
オブジェクトのベクトルとして指定されます。
このプロパティはサブクラスの作成にのみ使用されます。このプロパティは、プロバイダーの complete
を呼び出す前に MATLAB で設定されます。マルチパート メッセージ以外については、このプロパティは、MATLAB によって matlab.net.http.field.GenericFields
や値が空のフィールドを除いた Request.Header
の内容に初期化されます。ContentProvider
では、送信するデータを示すヘッダー フィールドを追加したり、メッセージの既存のヘッダー フィールドにパラメーターを追加したりする場合にこのプロパティを使用します。MultipartProvider
のデリゲートでは、このプロパティは、MATLAB によってデリゲート元のプロバイダーが挿入するパート用のヘッダー フィールドに初期化されます。これらのフィールドはデリゲートで変更が可能です。
マルチパート メッセージ以外では、プロバイダーの complete
メソッドから戻ると、MATLAB はこのプロパティを読み取って、その内容を Request
のヘッダーにマージします。この Header
に含まれるフィールドの Names
が Request.Header
にない場合、Request.Header
の末尾に追加されます。この Header
に含まれるフィールドの Name
が Request.Header
に含まれるフィールドと同じで、どちらの Values
も空でない場合は、次のように処理されます。
Request.Header
のフィールドがGenericField
の場合、Header
のフィールドは無視されます。Request.Header
のフィールドがGenericField
でない場合、Header
のフィールドに置き換えられます。
これらの一方または両方の Value
が空の場合は、Request.Header
からフィールドが削除され、メッセージの正常な終了時にも追加されません。
MultipartProvider
のデリゲートの場合は、この Header
の内容全体がパートのヘッダーとして使用されます。マルチパート デリゲートでは、Request.Header
にその Header
に付随する任意のフィールドが含まれていると想定してはなりません。プロバイダーがマルチパート デリゲートであるかどうかは MyDelegator
が MultipartProvider
かどうかを確認すれば特定できますが、このテストが必要になることはほとんどありません。
このプロパティが MATLAB で読み取られるのは、プロバイダーの complete
メソッドの呼び出しから戻るときだけです。MATLAB で start
が呼び出された後は、この配列に対する変更は無視されます。
クラスを作成するときは、スーパークラスで complete
を呼び出す前に、この (complete
メソッド内の) Header
にサブクラスがフィールドを追加済みの場合があることを認識しておく必要があります。それらのフィールドは残しておいて、同じ名前のフィールドを追加しないようにすることを推奨します。ただし、フィールドへのパラメーターの追加は可能です。たとえば、既存の Content-Type フィールドに charset パラメーターがない場合、スーパークラスで追加できます。
属性:
GetAccess | public |
SetAccess | public |
ForceChunked
— チャンク転送コーディングを強制するかどうかを示す
false
(既定値) | true
チャンク転送コーディングを強制するかどうかを示します。boolean として指定されます。これはサブクラスの作成にのみ関係するプロパティで、マルチパート デリゲート以外のプロバイダーにのみ該当します。サブクラスでは、ForceChunked
を設定することで、内容の送信にチャンク転送コーディングを使用するかどうかを制御します。false
(既定) の場合、MATLAB は、メッセージの送信準備ができた時点で内容の長さがわかっているかどうかに基づいて、内容をチャンク化して送信するかどうかを決定します。
MATLAB で内容の長さがわかっている場合 (メッセージに Content-Length フィールドがあるか、このプロバイダーの
expectedContentLength
メソッドから数値が返された場合)、チャンク化して送信するかどうかを MATLAB で決定します。MATLAB で内容の長さがわからない場合 (ヘッダーに Content-Length フィールドがないか、
expectedContentLength
の戻り値が空の場合)、MATLAB はメッセージを常にチャンク化して送信します。
ForceChunked
が true
の場合、内容の長さがわかっているかどうかに関係なく、既知の長さがチャンク サイズに満たない場合を除き、MATLAB はメッセージをチャンク化して送信します。このプロパティが true
の場合は、メッセージに Content-Length フィールドを含めてはなりません。HTTP ではチャンクされたメッセージに Content-Length フィールドを含めることが許可されないためです。ただし、想定されるデータの長さを返しているかを MATLAB で検証する場合は、expectedContentLength
メソッドで非ゼロの値を返すことができます。
MATLAB でメッセージをチャンク化して送信する場合、各チャンクのサイズは getData
で返されたデータの長さと等しくなります。
MATLAB は、complete
メソッドを呼び出してから start
を呼び出すまでの間にこの値を読み取ります。このフィールドの設定は行いません。
属性:
GetAccess | public |
SetAccess | public |
Request
— 送信する要求メッセージ
matlab.net.http.RequestMessage
送信する要求メッセージ。matlab.net.http.RequestMessage
オブジェクトとして指定されます。
このプロパティはサブクラスの作成にのみ使用されます。このプロパティは、このプロバイダーで他のメソッドを呼び出す前であり、かつヘッダー フィールドを追加したりメッセージを検証したりする前に、このプロバイダーが Body
に配置された RequestMessage
に RequestMessage.send
メソッドと RequestMessage.complete
メソッドで設定されます。プロバイダーは、このメッセージを調べて元の要求の内容を確認できます。
デリゲートの場合、このプロパティの値はデリゲーターと同じになります。ContentProviders
がデリゲートである場合は、必ずしも要求メッセージの本文全体を提供するわけではないため、この Request のヘッダー フィールドがそのプロバイダーで提供するデータに関連するものであるとは限らないことに注意が必要です。通常、デリゲートでは、この要求のデータ関連のヘッダー フィールド (Content-Type など) は無視します。
このメッセージへのヘッダー フィールドの追加や既存のヘッダー フィールドの変更をプロバイダーで行う場合は、complete
メソッドで Header
プロパティにそれらのフィールドを追加します。それらのフィールドに対する処理は、complete
の呼び出し元 (RequestMessage
またはデリゲート元のプロバイダー) で決定されます。RequestMessage.send
と RequestMessage.complete
は、それらのフィールドを RequestMessage
の Header
に常にコピーします。デリゲート元のプロバイダーでは、フィールドをそれぞれの Header
プロパティにコピーしたりメッセージに挿入したりできます (MultipartProvider
の場合と同様)。詳細については、Header プロパティを参照してください。
このプロパティは読み取り専用です。
属性:
GetAccess | public |
SetAccess | matlab.net.http.RequestMessage |
保護プロパティ
Subtype
— プロバイダーのサブタイプ
"mixed"
(既定値) | string
プロバイダーのサブタイプ。string として指定します。既定の値 "mixed"
は、"multipart/mixed"
に設定された Content-Type ヘッダーをメッセージと適切なパラメーターに追加します。サブクラスはコンストラクターまたは complete
メソッドでこの値を変更できます。この値は "multipart/"
の後の Content-Type に表示されます。
属性:
GetAccess | protected |
SetAccess | protected |
CurrentDelegate
— このプロバイダーのデリゲート先の ContentProvider
matlab.net.http.io.ContentProvider
| 空
このプロバイダーのデリゲート先の ContentProvider
。matlab.net.http.io.ContentProvider
オブジェクトとして指定されます。このプロパティは、現在のデリゲート先のプロバイダーを示すために呼び出し元のプロバイダー (デリゲーター) の delegateTo
メソッドで設定されます。現在のデリゲーションがない場合、値は空です。
このプロパティは complete
メソッドで空に設定されます。
属性:
GetAccess | protected |
SetAccess | protected |
MyDelegator
— このプロバイダーのデリゲート元の ContentProvider
matlab.net.http.io.ContentProvider.empty
(既定値) | matlab.net.http.io.ContentProvider
このプロバイダーのデリゲート元の ContentProvider
。matlab.net.http.io.ContentProvider
オブジェクトとして指定されます。
このプロパティは、ContentProvider
から別のプロバイダーにメッセージのすべてまたは一部のデータの送信がデリゲートされている場合に、デリゲート元のプロバイダーを示します。たとえば、MultipartProvider
はメッセージのパートを他のプロバイダーにデリゲートするため、各デリゲートに自身のハンドルを挿入します。それ以外の場合、MyDelegator
は空です。このプロパティは、デリゲートの delegateTo
メソッドで設定されます。
属性:
GetAccess | protected |
SetAccess | protected |
メソッド
パブリック メソッド
getData | マルチパート HTTP 要求メッセージで送信するデータの次のバッファー |
特殊な演算子と関数
次のメソッドは、MATLAB の標準の演算子および関数と継承メソッドを、このクラスのオブジェクト用に特殊化したものです。
string | string としてのプロバイダー情報 |
show | プロバイダー情報を表示します |
保護されたメソッド
complete | MultipartProvider の HTTP ヘッダーの完了 |
preferredBufferSize | ContentProvider の推奨されるバッファー サイズ |
expectedContentLength | ContentProvider の内容の長さ |
start | MultipartProvider からデータ転送を開始 |
restartable | ImageProvider が再起動可能かどうか |
reusable | ImageProvider が再利用可能かどうか |
delegateTo | 別のプロバイダーにデリゲートする |
詳細
クラスの階層
バージョン履歴
R2018a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)