メインコンテンツまでスキップ
バージョン: 20 R7 BETA

WEB GET BODY PART

WEB GET BODY PART ( part ; contents ; name ; mimeType ; fileName )

引数説明
partIntegerパート番号
contentsBlob, Textパートを受け取る変数
nameTextinput要素のname属性値
mimeTypeTextファイルのMIMEタイプ
fileNameText送信されたファイルの名前

説明

WEB GET BODY PARTコマンドはWebプロセスのコンテキストで使用され、マルチパートリクエストのボディ部を解析します。

part 引数には解析対象のパート番号を渡します。総パート数はWEB Get body part countコマンドで取得できます。

contents 引数にはパートのコンテンツが返されます。取得するパートがファイルの場合、BLOB型の引数を渡さなければなりません。Webフォームから送信されるテキストデータの場合、テキスト型の引数を渡すことができます。

name 引数にはフォームのinput 要素のname属性値が返されます。

mimeTypefileName 引数には、送信されたファイルのMIMEタイプと名前が返されます。fileName はフォーム要素 を使用してファイルが送信された場合のみ値が返されます。
mimeTypefileName はオプションですが、使用する場合はペアで渡さなければなりません。

注: マルチパートリクエストのコンテキストでは、WEB GET VARIABLESコマンドで取得できる名前配列にはフォームのすべてのパートが含まれます。順番はWEB GET BODY PARTコマンドと同じです。フォーム中のパートの位置を取得するためにこのコマンドを使用できます。

警告: mimeTypefileName 引数に返される情報は、Webサーバーに送信されたHTTPリクエストに基づくもので、ファイルの内容は検証されません。それらの情報が正当であるかどうかの検証は開発者が行わなければなりません。

例題

この例題ではWebフォームからHTTPサーバーに画像を何枚かアップロードし、それらを返されたWebページ上に表示します。Webフォームは以下のように表示されます:

HTMLソースは以下の通りです:

<body>
        <form enctype="multipart/form-data" action="/4DACTION/GetFile/" method="post">
            アップロードするピクチャーを選択: <br>
            ピクチャーファイル1: <input name="file1" type="file"><br>
            ピクチャーファイル2: <input name="file2" type="file"><br>
            <input type="submit">                   
        </form>    
        <hr/>
    <!--4DSCRIPT/galleryInit-->
    <!--4DLOOP aFileNames-->
        <img src="/photos/<!--4DTEXT aFileNames{aFileNames}-->"/>
    <!--4DENDLOOP-->
</body>

2つの4Dメソッドがページから呼ばれています:

  • ページを送信する際、4DSCRIPタグで呼び出される galleryInit 。このメソッドは指定されたフォルダー内に存在するピクチャー名の配列を作成します。
  • ブラウザーからのリクエストを処理する GetFile メソッド。

galleryInitのコードは以下の通りです:

 var $vDestinationFolder : Text
 ARRAY TEXT(aFileNames;0)
 var $i : Integer
 $vDestinationFolder:=Get 4D folder(HTML Root folder)+"photos"+Folder separator //"WebFolder/photos" フォルダー
 DOCUMENT LIST($vDestinationFolder;aFileNames)

GetFileのコードは以下の通りです:

 var $vPartName;$vPartMimeType;$vPartFileName;$vDestinationFolder : Text
 var $vPartContentBlob : Blob
 var $i : Integer
 $vDestinationFolder:=Get 4D folder(HTML Root folder)+"photos"+Folder separator
 For($i;1;WEB Get body part count) // パートの数だけ繰り返す
    WEB GET BODY PART($i;$vPartContentBlob;$vPartName;$vPartMimeType;$vPartFileName)
    If($vPartFileName#"")
  // ここでファイルの内容を検証すべきです
       BLOB TO DOCUMENT($vDestinationFolder+$vPartFileName;$vPartContentBlob)
    End if
 End for
 WEB SEND HTTP REDIRECT("/")

参照

WEB Get body part count
WEB GET HTTP BODY
WEB GET VARIABLES