クラス FileUploadTag
java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
jakarta.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.FileUploadTag
- すべての実装されたインタフェース:
BodyTag
,IterationTag
,JspTag
,Tag
,TryCatchFinally
,Serializable
クライアントのファイルをサーバーにアップロードするタグです。
アップロード後の属性は、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))
その場合は、新しいファイル名への変更はできません。オリジナルのファイル名でアップロードされます
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 に変更
8.1.2.0 (2022/03/10)
name + _NEW と同じ考え方で、_HASH(ファイルのハッシュ値) 機能を追加します。
システム定数のFILE_HASH_CODEで計算されたハッシュ値を DBTableModel に格納します。
- 関連項目:
- 機能分類
- ファイル入力
- 形式サンプル:
- ●形式:<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/session/application]を指定します (初期値:session) tableId 【TAG】(通常は使いません)sessionから所得する DBTableModelオブジェクトの ID columns 【TAG】DBTableModel作成時に、指定のカラムの"_01"~"_99"の添え字をレコードとして作成します。 useBackup 【TAG】すでに同名のファイルが存在した場合に、バックアップ処理するかどうか[true/false/rename]を指定します(初期値:null=false) useBackup="rename" で、"_001" のような文字列を追加します。 × storage 【廃止】保存先ストレージタイプを指定します 5.10.9.0 (2019/03/01) ADD × bucket 【廃止】保存先バケット名を指定します 5.10.9.0 (2019/03/01) ADD useLocal 【TAG】システム定数でクラウド設定されていても、クラウド環境を使用しない場合、trueを指定します(初期値:false) 8.0.1.0 (2021/10/29) 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> <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}" />
- 導入されたバージョン:
- JDK5.0,
-
フィールドの概要
フィールドクラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport
BR, BUFFER_MIDDLE, CR
クラスから継承されたフィールド jakarta.servlet.jsp.tagext.BodyTagSupport
bodyContent
クラスから継承されたフィールド jakarta.servlet.jsp.tagext.TagSupport
id, pageContext
インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.BodyTag
EVAL_BODY_BUFFERED, EVAL_BODY_TAG
インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.IterationTag
EVAL_BODY_AGAIN
インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明int
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。protected String
タグの名称を、返します。protected void
release2()
タグリブオブジェクトをリリースします。void
setColumns
(String clms) 【TAG】DBTableModel作成時に、指定のカラムの"_01"~"_99"の添え字をレコードとして作成します。void
setFilename
(String fname) 【TAG】(通常は使いません)ファイルを作成するときのファイル名をセットします(初期値:null)。void
setFileURL
(String url) 【TAG】ファイルをアップロードするディレクトリを指定します (初期値:FILE_URL[=])。void
setMaxPostSize
(String maxPS) 【TAG】最大転送サイズ(Byte)を指定します(初期値:31457280)。void
setTableId
(String id) 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。void
setUseBackup
(String flag) 【TAG】すでに同名のファイルが存在した場合に、バックアップ処理するかどうか[true/false/rename]を指定します(初期値:null=false)。void
setUseLocal
(String flag) 【TAG】システム定数でクラウド設定されていても、クラウド環境を使用しない場合、trueを指定します(初期値:false)。toString()
このオブジェクトの文字列表現を返します。クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport
add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, debugPrint, doAfterBody, doCatch, doFinally, doStartTag, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsg, getMsglbl, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, 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, useStrict, useTag, useXssCheck
クラスから継承されたメソッド jakarta.servlet.jsp.tagext.BodyTagSupport
doInitBody, getBodyContent, getPreviousOut, release, setBodyContent
クラスから継承されたメソッド jakarta.servlet.jsp.tagext.TagSupport
findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue
クラスから継承されたメソッド java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
インタフェースから継承されたメソッド jakarta.servlet.jsp.tagext.Tag
getParent, setPageContext, setParent
-
フィールド詳細
-
UPLOAD_FILES
5.7.6.3 (2014/05/23) アップロードファイルのCSVセットのキー- 関連項目:
-
-
コンストラクタの詳細
-
FileUploadTag
public FileUploadTag()デフォルトコンストラクター- 変更履歴:
- 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
-
-
メソッドの詳細
-
doEndTag
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。- 定義:
doEndTag
インタフェース内Tag
- オーバーライド:
doEndTag
クラス内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) クラウドストレージの利用追加対応, 6.9.0.1 (2018/02/05) ファイルをセーブするディレクトリは、必要な場合のみ、作成します。, 8.0.1.0 (2021/10/29) storageType , bucketName 削除
-
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 修正、最大ファイル容量 変更, 8.0.1.0 (2021/10/29) useLocal 属性を追加。, 8.0.1.0 (2021/10/29) storageType , bucketName 削除
-
setFileURL
【TAG】ファイルをアップロードするディレクトリを指定します (初期値:FILE_URL[=])。- パラメータ:
url
- ファイルURL- 関連項目:
- 変更履歴:
- 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の最後に、"/" を追加する処理を廃止。
- 説明:
- この属性で指定されるディレクトリに、アップロードされたファイルをセーブします。 指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、2文字目が、 ":" (Windows)の場合は、指定のURLそのままのディレクトリに、そうでない場合は、 fileURL = "{@USER.ID}" と指定すると、FILE_URL 属性で指定のフォルダの下に、 さらに、各個人ID別のフォルダを作成して、そこにセーブします。 (初期値:システム定数のFILE_URL[=])。
-
setMaxPostSize
【TAG】最大転送サイズ(Byte)を指定します(初期値:31457280)。- パラメータ:
maxPS
- 最大転送サイズ- 変更履歴:
- 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の修正)
- 説明:
- 最大転送サイズを指定します。初期値は、30*1024*1024 = 30MB です。 指定は、Byte 単位で指定します。 0,またはマイナスを指定することで、制限チェックを外す(=無制限)事ができます。
-
setTableId
【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。- パラメータ:
id
- テーブルID (sessionに登録する時のID)- 変更履歴:
- 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。
- 説明:
- 検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=])。
-
setFilename
【TAG】(通常は使いません)ファイルを作成するときのファイル名をセットします(初期値:null)。- パラメータ:
fname
- ファイル名- 変更履歴:
- 3.5.4.2 (2003/12/15) ファイル名を指定できるようにします。, 5.7.1.1 (2013/12/13) リクエスト変数が使えないエラーを表示する。, 5.7.4.3 (2014/03/28) リクエスト変数を使えるようにします。
- 説明:
- ファイルを作成するときのファイル名をセットします。 これは、複数同時にアップロードファイル名を変更する時に使用できません。 通常、アップロードされたファイル名を指定する場合、アップロードする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 側の処理に組み込みます。
-
setColumns
【TAG】DBTableModel作成時に、指定のカラムの"_01"~"_99"の添え字をレコードとして作成します。- パラメータ:
clms
- DBTableModel作成時のカラム列(CSV形式)- 変更履歴:
- 5.6.5.2 (2013/06/21) 新規作成, 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。
- 説明:
- 現状は、"KEY","VALUE","ISFILE" のカラムに、データを縦持ちで作成しています。 これを、横持で作成しますが、カラムの末尾に、"_01"~"_99" までの添え字を 持つ場合は、これをレコードと認識させます。 アンダーバーがない場合は、カラムだけ作成されます。カラム名と同じリクエストがあれば、 すべてのレコードに同じ値がセットされます。 この処理は、columns 属性を設定した場合のみとします。
-
setUseBackup
【TAG】すでに同名のファイルが存在した場合に、バックアップ処理するかどうか[true/false/rename]を指定します(初期値:null=false)。- パラメータ:
flag
- バックアップ処理可否 [true:する/false:しない]- 変更履歴:
- 5.6.5.3 (2013/06/28) 新規作成, 5.7.4.3 (2014/03/28) リクエスト変数が使えない事のチェックを行う。, 6.0.2.4 (2014/10/17) true/false 以外に、rename も有効とする。
- 説明:
- ファイルアップロード時に、アップロード先に、同名のファイルが存在した場合は、既存機能は、そのまま 置き換えていましたが、簡易バージョンアップ機能として、useBackup="true" を指定すると、既存のファイルを リネームして、バックアップファイルを作成します。 バックアップファイルは、アップロードフォルダを基準として、_backup/ファイル名.拡張子_処理時刻のlong値.拡張子 になります。 オリジナルのファイル名(拡張子付)を残したまま、"_処理時刻のlong値" を追加し、さらに、オリジナルの拡張子を追加します。 バックアップファイルの形式は指定できません。 初期値は、互換性を持たせるため、null(=false) です。 6.0.2.4 (2014/10/17) useBackup="rename" で、すでに同名のファイルが存在した場合に、"_001" のような文字列を追加したファイルにリネームします。 Windowsの " - コピー (2)" に近いですが、桁数を抑えるのと、useBackup="true" と異なり、過去の同一ファイル名は そのまま、有効になります。同一ファイルが同一フォルダに存在する場合のみ連番が付与されます。
-
getTagName
タグの名称を、返します。 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。- オーバーライド:
getTagName
クラス内CommonTagSupport
- 戻り値:
- タグの名称
- 関連項目:
- 変更履歴:
- 4.0.0.0 (2005/01/31) 新規追加
- このメソッドは、nullを返しません
-
setUseLocal
【TAG】システム定数でクラウド設定されていても、クラウド環境を使用しない場合、trueを指定します(初期値:false)。- パラメータ:
flag
- ローカル環境のみ [true:ローカルのみ/false:設定どおり]- 変更履歴:
- 8.0.1.0 (2021/10/29) useLocal 属性を追加。
- 説明:
- クラウド設定は、システム定数の『CLOUD_TARGET』と『CLOUD_BUCKET』の設定で自動的に使用しますが、 どうしてもローカルでのみ使いたい場合は、この属性を true に設定します。 標準はfalse:設定どおりとなります。 true/false以外を指定した場合はfalse扱いとします。
-
toString
このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。- オーバーライド:
toString
クラス内CommonTagSupport
- 戻り値:
- このクラスの文字列表現
- このメソッドは、nullを返しません
-