メニュー
UpLoadへ 複数選択 UpLoadへ DownLoadへ ExcelOpenへ マニュアルへ
ファイルのアップとダウンロードの解説
はじめに)
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としメニュー画面を表示しています。
★複数選択アップロードは、このアップロードシートを改造し、複数選択を可能としたものです。「UploadM」シートになります。
詳細は、シート内のコメントを見てください。
アップロードされたファイルについて
アップロードされたファイルは、procgi\profiles\FileUpDownフォルダにつぎのように格納されます。
ファイル名には、固有番号と_記号が追加され、エンコードされます。
エンコードしたままとしている理由は、OSの種類などによる文字コードの差を回避するため、およびセキュリティのためです。BatやExeなどをアップロードし実行するなどを避けるためです。
なお、このprofilesフォルダにはエンコードされてないファイル名のファイル以外格納してはなりません。エンコードを外す場合は、どこか別のフォルダへコピーなどを行ってください。
アップされたファイルのエンコードの仕様について
ファイル名のエンコード方法は通常モードと、ロングファイル名対応モードの2種類があります。
各モードはproles.iniのLongFileNameにて切り替えることが可能です。
LongFileName=0 で、従来通りのエンコードモード、LongFileName=1で、 ロングファイル名の対応となります。

従来モードは、XCuteの動作モードがShiftJISモードの場合、全角31文字(+拡張子半角3文字)まで。 UTF8モードは、全角16文字(+拡張子半角文字)までアップロード可能です。

ロングフ
・従来モード時のファイル名は以下のルールとなります。
グリニッジ累積秒(10n) + 枝番(3n) + [フラグ] + "_" + URLエンコードファイル名

例:2019/6/12 10:25頃、xcute.gifというファイルを、UTF-8モードでアップロードした場合。
1560302721000u_xcute%2Egif
というファイル名で、profilesに格納されます。さらにこの格納ファイル名が、アップロードフォームの入力規則に返されます。

フラグの意味は以下の通りです
フラグなし=ファイル
・ロングファイル名モード時のファイル名は以下のルールとなります。
グリニッジ累積秒(10n) + 枝番(3n) + "フラグ" + "_NoName%2e" + 拡張子
というファイル名で、profilesに格納されます。さらに、生のファイル名が、アップロードフォームの入力規則に返されます。

例:あいうえおかきくけこさしすせそたちつてと.jpgをアップロードした場合。
1560306886000L_NoName%2Ejpg
というファイル名でprofilesに格納されます。 アップロードフォームの入力規
従来モードのXCuteをお使いの方
すでに作成されたプロジェクトをロングファイル名に対応するには、ファイル名を格納するDBのフィールドの文字サイズを2000文字以上にすること(Accessならばメモ型)。
および、入力規則に返されるファイル名はエンコードされない形式で「:」コロン文字を区切りとして帰ってくるので、それを考慮したデコード行うこと。
の2点を注意してください。
ファイル一覧表示
ブラウザのファイル一覧表示は、gifとjpgファイルは<Imgタグで画像として表示し、それら以外のファイルでは、Aタグを使っています。
この時の、ひな型の残滓を下に示します。
この時の、ブラウザに表示されたHTMLファイルを下に示します。
上記の赤色のように、XCuteでは、profiles/ フォルダに対するリンクはHTML化の際にdownload.exeというcgi経由でのダウンロードに置き換えを行います。
ファイルが盗難されることを防止するセキュリティ上の配慮です。また、ブラウザからダウンロードする際のファイル名のデコードや付けなおしも、download.exeが行います。

ダウンロード用のファイルリンクは以下のような指定が可能です。
・<a HREF="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の設定によって、その動作が変化します。セキュリティを高める場合は、下記を参考にSecureを適切に設定してください。
Secureについて:
Secure=1の場合、UpLoad画面をブラウザに表示した時刻を記憶し、SecureTimeOut以内の時間で、ファイルアップロード動作を許可します。
Secure=2では、Cookieを利用しブラウザを特定していますので、UpLoad画面表示したブラウザのみ、ファイルのアップロードを許可します。
Secure=0では、一切のチェックを行っていません。UpLoad画面を表示することなく、ファイルをアップロードすることが可能です。