public class FileUploadTag extends CommonTagSupport
クライアントのファイルをサーバーにアップロードするタグです。
アップロード後の属性は、DBTableModel に格納することにより、通常のデータと
同様の取り出し方が可能です。
また、通常のファイルアップロード時の、form で使用する、enctype="multipart/form-data"
を指定した場合の、他のリクエスト情報も、{@XXXX} 変数で取り出すことが可能です。
この upload タグでは、アップロード後に、指定のファイル名に変更する機能があります。
file 登録ダイアログで指定した name に、"_NEW" という名称を付けたリクエスト値を
ファイルのアップロードと同時に送信することで、この名前にファイルを付け替えます。
また、アップロード後のファイル名は、name 指定の名称で、取り出せます。
クライアントから登録したオリジナルのファイル名は、name に、"_ORG" という名称
で取り出すことが可能です。
通常では、これらのパラメータを、RequestAttribute 変数にセットしますので、{@XXXX}で
取り出すことが可能になります。さらに、"KEY","VALUE","ISFILE" のカラムを持った、
DBTableModel にセットします。
新機能として、columns を指定する事で、columns のカラムを持つ DBTableModel にセットします。
その場合は、カラム名_01 ~ カラム名_99 のように、アンダーバーで列データとなるキーを定義してください。
アンダーバーがない場合は、カラムだけ作成されます。カラム名と同じリクエストがあれば、
すべてのレコードに同じ値がセットされます。
新ファイル名に拡張子が設定されていない場合は、オリジナルファイル名の拡張子をセットします。
HTML5 の type="file" 時の multiple 属性(アップロードファイルの複数選択機能)に対応します。(5.7.1.1 (2013/12/13))
その場合は、新しいファイル名への変更はできません。オリジナルのファイル名でアップロードされます
5.7.1.2 (2013/12/20) zip 対応
filename 属性に、".zip" の拡張子のファイル名を指定した場合は、アップロードされた一連のファイルを
ZIP圧縮します。これは、アップロード後の処理になります。
ZIP圧縮のオリジナルファイルは、そのまま残ります。
なお、ZIPファイルは、useBackup属性を true に設定しても、無関係に、上書きされます。
5.7.4.3 (2014/03/28) filename 属性のリクエスト変数対応
filename 属性のみ、{@XXXX} のリクエスト変数が使えるようにします。
他のパラメータでは使えません。
これは、multipart/form-data のリクエストでは、パートの分解処理をしないと、リクエスト変数が
拾えない為、リクエスト変数は、この、upload タグ以降でのみ利用可能でした。
zip対応と関連付けて、filename 属性のみ、利用できるように、MultipartRequest 側の処理に組み込みます。
5.7.6.3 (2014/05/23) アップロードファイルのCSVセット
個々に指定したアップロードファイル名は、XXX_NEW や XXX_ORG で取得できますが、
HTML5 の multiple 属性使用時や、アップロードされたファイルを一連で処理したい場合に
ファイル名を、CSV形式で取り出せるようにします。
キーは、共通で、UPLOAD_FILES とします。
6.0.2.4 (2014/10/17)
① name + _NEW と同じ考え方で、_PFX(接頭辞) , _SFX(接尾辞) 機能を追加します。
② 上記機能は、_NEW との併用可能。_NEW がない場合は、オリジナル(アップロードされた元のファイル名)に付与
③ useBackup="rename" で、すでに同名のファイルが存在した場合に、"_001" のような文字列を追加したファイルにリネームします。
Windowsの " - コピー (2)" に近いですが、桁数を抑えるのと、useBackup="true" と異なり、過去の同一ファイル名は
そのまま、有効になります。同一ファイルが同一フォルダに存在する場合のみ連番が付与されます。
④ name + _NEW の指定に、フォルダを含めることが可能。ただし、接続文字列は、"/" とする。
同時にアップロードを行う場合に、個別にフォルダを振り分けたり、_PFX(接頭辞) に、フォルダを指定
することも可能です。
⑤ 最大転送サイズ(Byte)を 10M → 30M に変更
5.9.25.0 (2017/10/06)
クラウド上のPaaSでオブジェクトストレージを利用する際は以下のシステムリソースを設定してください。
CLOUD_STORAGE,CLOUD_STORAGE_CONTAINER
plugin/cloud内のクラスを利用してファイルアップロード(FileUploadタグ)、ダウンロード(FileDownloadサーブレット)をAPI経由で行います。
プラグインが利用するjarファイルの配置は必要です。 ●形式:<og:upload fileURL="…" maxPostSize="…" />
●body:なし
●Tag定義:
<og:upload
fileURL 【TAG】ファイルをアップロードするディレクトリを指定します (初期値:FILE_URL[=filetemp/])
filename 【TAG】(通常は使いません)ファイルを作成するときのファイル名をセットします(初期値:null)
maxPostSize 【TAG】最大転送サイズ(Byte)を指定します(初期値:31457280=30M) 0,またはマイナスで無制限です。
scope 【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session)
tableId 【TAG】(通常は使いません)sessionから所得する DBTableModelオブジェクトの ID
columns 【TAG】DBTableModel作成時に、指定のカラムの"_01"~"_99"の添え字をレコードとして作成します。
useBackup 【TAG】すでに同名のファイルが存在した場合に、バックアップ処理するかどうか[true/false/rename]を指定します(初期値:null=false)
useBackup="rename" で、"_001" のような文字列を追加します。
language 【TAG】タグ内部で使用する言語コード[ja/en/zh/…]を指定します
debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
/>
●使用例 :
【query.jsp】
<form method="POST" action="result.jsp" enctype="multipart/form-data" target="RESULT">
<table summary="layout" >
<tr><og:input type="text" name="submitter" value="{@USER.JNAME}" size="20" lbl="MSG0014" /></tr>
<tr>
<og:input type="file" name="file_01" size="30" lbl="MSG0015" />
<og:input name="file_01_NEW" size="10" lbl="FILENAME" />
</tr><tr>
<og:input type="file" name="file_02" size="30" lbl="MSG0015" />
<og:input name="file_02_NEW" size="10" lbl="FILENAME" />
</tr><tr>
<og:input type="file" name="file_03" size="30" lbl="MSG0015" />
<og:input name="file_03_NEW" size="10" lbl="FILENAME" />
</tr><tr>
<og:column name="writable" value="false" />
</tr>
</table>
【result.jsp】
<og:upload
fileURL = "{@USER.ID}"
/>
<br />
<og:message lbl="MSG0003" comment="ファイルの登録が完了しました。" />
<og:view
command = "NEW"
viewFormType = "HTMLTable"
writable = "{@writable}"
/>
<table>
<tr><og:input name="submitter" value="{@submitter}" /></tr>
<tr><og:input name="writable" value="{@writable}" /></tr>
<tr><og:input name="directory" value="{@directory}" /></tr>
<tr><og:input name="file_01" value="{@file_01}" /></tr>
<tr><og:input name="file_01_NEW" value="{@file_01_NEW}" /></tr>
<tr><og:input name="file_01_ORG" value="{@file_01_ORG}" /></tr>
<tr><og:input name="file_02" value="{@file_02}" /></tr>
<tr><og:input name="file_02_NEW" value="{@file_02_NEW}" /></tr>
<tr><og:input name="file_02_ORG" value="{@file_02_ORG}" /></tr>
<tr><og:input name="file_03" value="{@file_03}" /></tr>
<tr><og:input name="file_03_NEW" value="{@file_03_NEW}" /></tr>
<tr><og:input name="file_03_ORG" value="{@file_03_ORG}" /></tr>
</table>
【result.jsp】
<og:upload
fileURL = "{@USER.ID}"
columns = "submitter,file"
/>
<br />
<og:message lbl="MSG0003" comment="ファイルの登録が完了しました。" />
<og:view
command = "NEW"
viewFormType = "HTMLTable"
writable = "{@writable}"
/>| 修飾子とタイプ | フィールドと説明 |
|---|---|
static java.lang.String |
UPLOAD_FILES
5.7.6.3 (2014/05/23) アップロードファイルのCSVセットのキー
|
BR, BUFFER_MIDDLE, CRbodyContentid, pageContextEVAL_BODY_BUFFERED, EVAL_BODY_TAGEVAL_BODY_AGAINEVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE| コンストラクタと説明 |
|---|
FileUploadTag()
デフォルトコンストラクター
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
|
protected java.lang.String |
getTagName()
タグの名称を、返します。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setColumns(java.lang.String clms)
【TAG】DBTableModel作成時に、指定のカラムの"_01"~"_99"の添え字をレコードとして作成します。
|
void |
setFilename(java.lang.String fname)
【TAG】(通常は使いません)ファイルを作成するときのファイル名をセットします(初期値:null)。
|
void |
setFileURL(java.lang.String url)
【TAG】ファイルをアップロードするディレクトリを指定します
(初期値:FILE_URL[=filetemp/])。
|
void |
setMaxPostSize(java.lang.String maxPS)
【TAG】最大転送サイズ(Byte)を指定します(初期値:31457280)。
|
void |
setTableId(java.lang.String id)
【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
(初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
|
void |
setUseBackup(java.lang.String flag)
【TAG】すでに同名のファイルが存在した場合に、バックアップ処理するかどうか[true/false/rename]を指定します(初期値:null=false)。
|
java.lang.String |
toString()
このオブジェクトの文字列表現を返します。
|
add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doAfterBody, doCatch, doFinally, doStartTag, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getCommonTagThrowable, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheckdoInitBody, getBodyContent, getPreviousOut, release, setBodyContentfindAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValueclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetParent, setPageContext, setParentpublic static final java.lang.String UPLOAD_FILES
public FileUploadTag()
| 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. |
public int doEndTag()
doEndTag インタフェース内 TagdoEndTag クラス内 CommonTagSupport| 2.2.0.0 (2002/12/17) 中国語(国際化)対応 エンコードの取得方法変更 |
| 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 |
| 3.1.3.0 (2003/04/10) UTF-8 決め打ちのエンコード情報を取得する。 |
| 3.5.2.0 (2003/10/20) scope 属性を追加。 |
| 3.5.4.2 (2003/12/15) ファイル名を指定できるようにします。 |
| 3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェックを行います。 |
| 3.7.1.1 (2005/05/23) フォルダがない場合は、複数階層分のフォルダを自動で作成します。 |
| 3.8.1.3A (2006/01/30) 新ファイル名にオリジナルファイル名の拡張子をセットします |
| 5.3.7.0 (2011/07/01) エラーメッセージ内容変更 |
| 5.6.5.2 (2013/06/21) columns 属性の追加 |
| 5.6.5.3 (2013/06/28) useBackup 属性の追加 |
| 5.8.8.0 (2015/06/05) エラー文の日本語化 |
| 5.9.25.0 (2017/10/06) クラウドストレージの利用追加対応 |
protected void release2()
release2 クラス内 CommonTagSupport| 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 |
| 3.0.1.1 (2003/03/06) columns を廃止 |
| 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 |
| 3.5.4.2 (2003/12/15) ファイル名を指定できるようにします。 |
| 5.6.5.2 (2013/06/21) columns 属性の追加 |
| 5.6.5.2 (2013/06/21) useBackup 属性の追加 |
| 6.0.2.4 (2014/10/17) useBackup 修正、最大ファイル容量 変更 |
public void setFileURL(java.lang.String url)
url - ファイルURLSystemData.FILE_URL この属性で指定されるディレクトリに、アップロードされたファイルをセーブします。
指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、2文字目が、
":" (Windows)の場合は、指定のURLそのままのディレクトリに、そうでない場合は、
fileURL = "{@USER.ID}" と指定すると、FILE_URL 属性で指定のフォルダの下に、
さらに、各個人ID別のフォルダを作成して、そこにセーブします。
(初期値:システム定数のFILE_URL[=filetemp/])。| 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソッドの利用 |
| 4.0.0.0 (2007/11/20) 指定されたディレクトリ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。 |
| 5.7.1.1 (2013/12/13) リクエスト変数が使えないエラーを表示する。 |
| 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。 |
| 6.4.2.1 (2016/02/05) URLの最後に、"/" を追加する処理を廃止。 |
public void setMaxPostSize(java.lang.String maxPS)
maxPS - 最大転送サイズ最大転送サイズを指定します。初期値は、30*1024*1024 = 30MB です。 指定は、Byte 単位で指定します。 0,またはマイナスを指定することで、制限チェックを外す(=無制限)事ができます。
| 3.0.1.1 (2003/03/06) maxPostSize の設定バグ修正。 |
| 5.6.5.3 (2013/06/28) コメント追加(0,またはマイナスで無制限) |
| 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。 |
| 6.0.2.4 (2014/10/17) 最大ファイル容量 10M → 30M 変更(JavaDocの修正) |
public void setTableId(java.lang.String id)
id - テーブルID (sessionに登録する時のID)検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
| 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。 |
public void setFilename(java.lang.String fname)
fname - ファイル名 ファイルを作成するときのファイル名をセットします。
これは、複数同時にアップロードファイル名を変更する時に使用できません。
通常、アップロードされたファイル名を指定する場合、アップロードするinput タグの
name 属性に指定する名称 + "_NEW" というリクエスト値を同時に送信すれば、
内部的に関連付けて、ファイル名を更新します。
その場合、クライアントより指定したファイル名は、name属性+"_ORG" という
リクエスト値として取得することが可能になります。
name属性 には、最終的に設定されたファイル名がセットされています。
いずれの値も、{@name属性+"_ORG"} や、{@name属性+"_NEW"}として、
アップロードのオリジナルと変更後のファイル名を取得することが出来ます。
5.7.1.2 (2013/12/20) zip 対応
filename 属性に、".zip" の拡張子のファイル名を指定した場合は、アップロードされた一連のファイルを
ZIP圧縮します。これは、アップロード後の処理になります。
ZIP圧縮のオリジナルファイルは、そのまま残ります。
なお、ZIPファイルは、useBackup属性を true に設定しても、無関係に、上書きされます。
5.7.4.3 (2014/03/28) filename 属性のリクエスト変数対応
filename 属性のみ、{@XXXX} のリクエスト変数が使えるようにします。
他のパラメータでは使えません。
これは、multipart/form-data のリクエストでは、パートの分解処理をしないと、リクエスト変数が
拾えない為、リクエスト変数は、この、upload タグ以降でのみ利用可能でした。
zip対応と関連付けて、filename 属性のみ、利用できるように、MultipartRequest 側の処理に組み込みます。| 3.5.4.2 (2003/12/15) ファイル名を指定できるようにします。 |
| 5.7.1.1 (2013/12/13) リクエスト変数が使えないエラーを表示する。 |
| 5.7.4.3 (2014/03/28) リクエスト変数を使えるようにします。 |
public void setColumns(java.lang.String clms)
clms - DBTableModel作成時のカラム列(CSV形式)現状は、"KEY","VALUE","ISFILE" のカラムに、データを縦持ちで作成しています。 これを、横持で作成しますが、カラムの末尾に、"_01"~"_99" までの添え字を 持つ場合は、これをレコードと認識させます。 アンダーバーがない場合は、カラムだけ作成されます。カラム名と同じリクエストがあれば、 すべてのレコードに同じ値がセットされます。 この処理は、columns 属性を設定した場合のみとします。
| 5.6.5.2 (2013/06/21) 新規作成 |
| 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。 |
public void setUseBackup(java.lang.String flag)
flag - バックアップ処理可否 [true:する/false:しない]ファイルアップロード時に、アップロード先に、同名のファイルが存在した場合は、既存機能は、そのまま 置き換えていましたが、簡易バージョンアップ機能として、useBackup="true" を指定すると、既存のファイルを リネームして、バックアップファイルを作成します。 バックアップファイルは、アップロードフォルダを基準として、_backup/ファイル名.拡張子_処理時刻のlong値.拡張子 になります。 オリジナルのファイル名(拡張子付)を残したまま、"_処理時刻のlong値" を追加し、さらに、オリジナルの拡張子を追加します。 バックアップファイルの形式は指定できません。 初期値は、互換性を持たせるため、null(=false) です。 6.0.2.4 (2014/10/17) useBackup="rename" で、すでに同名のファイルが存在した場合に、"_001" のような文字列を追加したファイルにリネームします。 Windowsの " - コピー (2)" に近いですが、桁数を抑えるのと、useBackup="true" と異なり、過去の同一ファイル名は そのまま、有効になります。同一ファイルが同一フォルダに存在する場合のみ連番が付与されます。
| 5.6.5.3 (2013/06/28) 新規作成 |
| 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。 |
| 6.0.2.4 (2014/10/17) true/false 以外に、rename も有効とする。 |
protected java.lang.String getTagName()
getTagName クラス内 CommonTagSupportCommonTagSupport.getDocumentLink()| 4.0.0.0 (2005/01/31) 新規追加 |
public java.lang.String toString()
toString クラス内 CommonTagSupportWebアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.