4D v16.3

WEB GET BODY PART

ホーム

 
4D v16.3
WEB GET BODY PART

WEB GET BODY PART 


 

WEB GET BODY PART ( part ; contents ; name ; mimeType ; fileName ) 
引数   説明
part  倍長整数 in パート番号
contents  BLOB, テキスト in パートを受け取る変数
name  テキスト in input要素のname属性値
mimeType  テキスト in ファイルのMIMEタイプ
fileName  テキスト in 送信されたファイルの名前

説明   

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

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

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

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

mimeTypefileName 引数には、送信されたファイルのMIMEタイプと名前が返されます。fileName はフォーム要素 <input type="file"> を使用してファイルが送信された場合のみ値が返されます。
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のコードは以下の通りです:

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

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

 C_TEXT($vPartName;$vPartMimeType;$vPartFileName;$vDestinationFolder)
 C_BLOB($vPartContentBlob)
 C_LONGINT($i)
 $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("/")



参照 

4DオブジェクトをHTMLオブジェクトにバインドする
WEB Get body part count
WEB GET HTTP BODY
WEB GET VARIABLES

 
プロパティ 

プロダクト: 4D
テーマ: Webサーバ
番号: 1212

This command can be run in preemptive processes

 
履歴 

初出: 4D v13

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)