メニュー
UpLoadへ DownLoadへ ExcelOpenへ FileUpDown.Zip マニュアルへ
ファイルのアップとダウンロードの解説
はじめに)
Xcuteには、ブラウザからファイルのアップロードする仕組みが組み込まれています。このドキュメント同梱のサンプルを使って、アップロードの仕組みを解説します。
サンプル・アプリケーションの概要
1) サンプル・アプリケーションFileUpDown.plsをProles.exeで起動します。
2) このフォルダのstrat.htmを起動し、画面を参照してください。
ファイル・アップロード
1) UpLoad画面の表示(WriteSheet)
下記の画面は、ひな型UpLoadをWriteSheetすることでブラウザ表示されます。
ひな型UpLoad画面を下記にしめします。
ファイルのアップロードに必要なタグは、R8C6に設定されています。
="<FORM ENCTYPE='multipart/form-data' ACTION='procgi.exe' METHOD='POST'><Input Name='P' Value='"&R1C5&"' Type='Hidden'><Input Name='ReadReport' Value='UpLoad' Type='Hidden'><Input Name='UpDir' Value='FileUpDown' Type='Hidden'>"
<Form のENCTYPEは、multipart/form-dataとします。これは、ファイルアップのときに必要なタイプです。また、UpDir=FileUpDownでファイルアップのサブフォルダーを指定できます。
アップロードファイルを指定する入力フィールドは、下記のような入力規則をつけます。
2) ファイルアップロード後
以上のように、ブラウザから入力し、実行します。
アップロード直後の、UpLoadレポートのひな型シートの残滓を下記に示します。
ファイルのアップロードが実行され、そのファイル名がR12C3セル、R14C3セルに記述されます。 その後WriteReport=UpLoadが実行され、ファイル名をデータベースへ登録しています。
ReadReport=Uploadが実行されると、R3C4に追加件数が書き出されますので、これをトリガーにR3C8でWriteSheet=Menuとしメニュー画面を表示しています。
アップロードされたファイルについて
アップロードされたファイルは、procgi\profiles\FileUpDownフォルダにつぎのように格納されます。
ファイル名には、固有番号と_記号が追加され、エンコードされます。
エンコードしたままとしている理由は、日本語ファイル名はブラウザでは使えないためとセキュリティのためです。不心得者が、BatやExeをアップロードし実行するなどを避けるためです。
なお、このprofilesフォルダにはエンコードされてないファイル名のファイル以外格納してはなりません。エンコードを外す場合は、どこか別のフォルダへコピーなどを行ってください。
ファイル一覧表示
ブラウザのファイル一覧表示は、gifとjpgファイルは<Imgタグで画像として表示し、それら以外のファイルでは、A hrefタグを使っています。
この時の、ひな型の残滓を下に示します。
この時の、ブラウザに表示されたHTMLファイルを下に示します。
上記の赤色のように、Xcuteでは、profiles/はブラウザにHTMLファイルを戻す時「download.exe?fname=ファイル名&Act=profiles」置き換えられます。
ファイルが盗難されることを防止するセキュリティ上の配慮です。マニュアルに示されるセキュリティは、この変換で守られます。
ExcelOpenで一覧表示)
下記は、ブラウザの中のExcelに画像ファイルをセルに貼り付けたものです。
Excelに画像を貼り付けるには、メニューの挿入→図→ファイルからで行えますが、セルの大きさで貼り付けるのが、下記のSampleInsImgで、図の張り付けはマクロで行っています。
要約
1) ファイルのアップロード機能を使うには、ここに示されるUpLoadひな型シートを改造してお使いください。
2) UpDirパラメータには、アップロード先のprofilesフォルダのサブフォルダを指定するのに使用します。
3) アップロードファイルの最大バイト数は、proles.iniのFileUpMaxで指定します。
なお、複数のファイルをアップロードできるようにした場合、そのトータルサイズとなります。
4) アップロードしたファイルをリンクなどを行うには、タグでprofiles/ファイル名とします。ただし、ブラウザには、この部分は「download.exe?fname=ファイル名&Act=profiles」に置き換えられます。
5) 上記4)のdownload.exeを使いたくない場合は、profilesフォルダーにダウンロードされたファイルを別の公開フォルダーにコピーして「%2E」を「.」に置き換えて、利用してください。
ファイルアップロードの脆弱性について
procgi.exeはファイルがアップロードできるようになっているので、無意味なファイルを送りつけることも可能です。
この脆弱性は、proles.iniファイルのSecureを1または2に設定することで回避できます。
Secure=1の場合、UpLoad画面をブラウザに表示した時刻を記憶し、SecureTimeOut以内の時間で、ファイルアップロード動作を許可するものです。
Secure=2では、Cookieを利用しブラウザを特定していますので、UpLoad画面表示したブラウザ以外では、ファイルアップロードをすることができません。
Secure=0では、一切のチェックを行っていません。UpLoad画面を表示することなく、ファイルをアップロードすることが可能です。