リクエスタのアップロード

Web開発 > 動的Webページ

インターネットリクエスタはファイルをアップロードし、Magic プログラムはそれを受信することができます。これらを可能にするにはHTML ファイルを以下のように定義してください。

1. form タグのmethod 属性は、post にしてください。

例)

<form action=”/scripts/mgrqispi10x.dll” method=”post”>

2. form タグには、以下のような属性を含めてください。

ENCTYPE=”multipart/form-data”

例)

<form action=”/scripts/mgrqispi10x.dll” method=”post” ENCTYPE=”multipart/form-data”>

3. フォームにtype 属性がfile のinput タグを追加してください。このタグは、ユーザがローカルのファイル名を入力するエディットコントロールおよび、ファイルを選択するダイアログを表示するためのプッシュボタンを作成します。

このinput タグにname 属性を定義してください。

例)

<input type=”file” name=”MyFile”>

4. ファイルをMagic プログラムへパラメータとして渡すため、type 属性がfile のinputタグのname 属性を、type 属性がhidden、name 属性がARGUMENTS となっているinput タグに追加してください。

例)

<input type=”hidden” name=”ARGUMENTS” value=”var1,var2,....,MyFile,...varn”>

5. 対応するBLOB 項目は、起動されたMagic プログラム内でパラメータとして定義してください。この項目に、更新ファイルの内容が入ります。

項目の内容は、Blb2File関数で物理ファイルに変換できます。

注意:

Microsoft の制限により、大きなファイル(3MB や4MB)を送信しようとした時に、Winsock のエラー10055 が発生して、正しくファイルを送信できない場合があります。

そのため、[コールリモート]処理コマンド、ファイルのアップロードなどにおいてBLOB 項目にファイルのデータを入れて、パラメータとしてやりとりする場合、ファイルサイズは1MB 以内にされることを推奨します。ファイルサイズが大きくなる場合、FTP などの代替手段を使用されることをご検討ください。

大きなBLOB 項目を転送する場合、ファイルサイズに応じてMGREQ.INI のCommTimeout を設定する必要があります。この値は、あらかじめFTP などでファイルの転送にかかる時間を計測して、その値にプラスアルファを加えた値に設定してください。

しかし、この値は、内部的な通信のリトライの間隔となるため、あまり大きな値を設定することは推奨できかねます。そのため、特に通信回線が細い場合など、この値が60 秒以内で転送できるサイズにとどめることを推奨します。