サポート > リポジトリ > モデル項目の定義 > 文字列 - ファイル
ja | en

ファイル型を用いると、画像やドキュメントを扱うことができるようになります。

実行例

ファイル項目を指定すると図1のような入力欄が用意されます。

図1 ファイル項目の入力欄

「ファイルを選択」ボタンへファイルをドラッグ&ドロップして登録することができます。R7.8

図2 画像をドラッグ&ドロップした

詳細表示画面では図3のようにイメージが表示されます。

図3 画像を登録した

WordやExcelといった非画像ファイルを登録することもできます。詳細表示画面では図4のようにアイコンが表示されます。

図4 Word文書を登録した
アイコンをクリックすると、そのファイルをダウンロードすることができます。

定義方法

文字列型項目の型詳細設定で「ファイル型」を選択します。

図5 ファイル型の指定

ファイル名の検索

「ファイル名」型の項目を検索条件とした場合、ファイル名が検索対象となります。文字列型として扱われるため部分一致、前方一致といった検索方法を指定することもできます。

ファイルの内容を検索する

Word,Excel,PowerPoint,PDFといったファイルの内容を検索することもできます。詳細は「全文検索」をお読みください。

繰り返しコンテナ内のファイル項目は、複数ファイルを一括でドラッグ&ドロップして登録することができます。ボタン名が「複数ファイルを選択」となっています。

図6 複数ファイルを選択するボタンが用意される

2つのファイルをドラッグ&ドロップした状態です。

図7 2つのファイルをドラッグ&ドロップした

保存ボタンを押下すると、繰り返しコンテナ部分に「2レコード」が登録されます。つまり、1ファイル毎に1レコードとなって登録されます。

図8 1ファイル毎に1レコードとなって登録された

Wagbyのファイル型は、次のような動作になります。

基本

  • Word,Excel,PowerPoint,PDF,CADデータ,画像など、どのようなファイルも登録できます。
  • 登録できるファイルサイズの上限はありません。
  • 画像ファイル (拡張子 gif, jpg, png など) を登録すると、画面上で閲覧できるようになります。表示サイズを指定することもできます。
  • その他のファイル (拡張子 doc, xls, zip など) を登録すると、画面上ではアイコンとして表示されます。アイコンをクリックすることでデータをダウンロードすることができます。
  • 新規登録・更新画面の処理は、Web ブラウザが提供するユーザーインタフェースに従います。一般的には、ダイアログボックスを使ってファイルを選択し、送信(アップロード)する方式となっています。
  • 画面上に用意された「クリア」ボタンをクリック(クリック後、入力欄が空の状態で保存)することでアップロードしたファイル名を消去することができます。
  • 日本語のファイル名にも対応しています。
  • ファイル名にスラッシュ "/"を利用することはできません。

ドラッグ&ドロップの動作

ブラウザによって挙動が異なります。

ブラウザ 複数ファイルアップロード ドラッグ&ドロップ操作 バッググラウンドアップロード
Google Chrome
Firefox
IE 10
IE 11
Edge -
IE 9 以前
その他のブラウザ
- - -

内部の構造

ファイル本体はデータベースに格納されません。upload_dirというフォルダ内にモデルIDのフォルダが用意され、その中に一時ファイル名が付与されて保存されます。

図9 upload_dirフォルダ

ファイル型項目を作成すると、対応する(データベースの)テーブルには二つの項目が用意されます。例を示します。

モデル product にファイル型項目 photo を用意したとします。このとき、テーブル product が作成されますが、項目は次のように二つ用意されます。

項目名 説明
photo ファイル名が格納されます。 duke3D.jpg
photo_jshfilename ファイルの存在するパスを示します。起点は wagbyapp/bin となっています。 ../../upload_dir/product/__multi1869501174086226700.tmp
この例では upload_dir に保存される実際のファイルは一時ファイル名(拡張子tmp)となっています。これをアップロードしたファイル名自身を使うようにすることもできます。次の節で説明します。

アップロードしたファイルの実体は upload_dir フォルダに格納されます。ファイル名は内部で機械的に変更され、拡張子は「.tmp」となります。(図10)

「画面 > その他 > ファイル名型項目の制御」内の「サーバに保存される実ファイル名」を指定することで、このルールを次の3種類から選択することができます。

(空白時)
ファイル名は機械的に付与されます。拡張子は .tmp となります。(標準)
ファイル名はユニーク、拡張子は維持
ファイル名は機械的に付与されますが、拡張子はアップロードしたファイルを踏襲します。
オリジナルファイル名をそのまま使う
ファイル名、拡張子ともアップロードしたファイルと同じものを使います。
図10 ファイル保存の設定

「オリジナルファイル名をそのまま使う」設定時の upload_dir フォルダを図11に示します。アップロード時のファイル名で格納されています。

図11 オリジナルファイル名をそのまま使う設定にした場合のupload_dirフォルダの内容

「オリジナルファイル名をそのまま使う」設定の注意点

  • 本番環境(サーバ)では、日本語名を扱える OS (例:Windows OS)を用いる必要があります。
  • 対象項目を検索条件とした場合、全角、半角を区別してご利用ください。入力フィルタは適用されません。(フィルタは内部で強制的に「文字列(最小限)」となります。)
  • オリジナルファイル名利用時に同名のファイルが登録された場合、自動的に "_1", "_2", "_3",... とファイル名を区分するための接尾語が付与されます。

運用途中でファイル名の扱いを「オリジナルファイル名を残す」方式に変更する場合

運用後に「ファイル名にオリジナルファイル名をそのまま使う」ように設定を変更して再ビルドし、アプリケーションを入れ替えた場合は次のようになります。

  • その前まで登録されたファイルは拡張子が .tmp のファイル名のまま。
  • アプリケーション入れ替え後に登録したファイルはオリジナルファイル名として保存される。

過去に登録された .tmp ファイル名を、オリジナルファイル名に戻すためのツールを提供しています。詳細はファイル名の扱いを「オリジナルファイル名を残す」方式に変更するをお読みください。

Wagby では、ファイル型の項目を定義するとテーブルには二つのカラムが用意されます。

  • 一つ目のカラムには、オリジナルのファイル名を保存する。
  • もう一つのカラムには、upload_dir フォルダ内の物理的なファイル名を記録する。

ファイルの実体の扱い

ファイルの削除処理を行なった場合、データベースからファイル名の情報は削除されますが、ファイルの実体は残っています。ファイル名にオリジナルファイル名をそのまま使う設定を行っていた場合、同名のファイルをアップロードすることで上書きされます。

ファイルの実体を upload_dir フォルダに残す理由は次のとおりです。

  • コピー登録機能を用いた場合、コピー元のデータを削除したときにコピーされたデータからファイルの実体が存在しなくなった、ということを防ぐ必要がある。
  • ファイル型項目の参照連動・自モデル保存の場合、連動元と連動先でファイルの二重管理を行う必要がある。連動元をコピーしても連動先から参照するファイルの実体は残っている必要がある。

物理的なファイルを定期的に削除する

残っているファイル(の実体)を定期的に削除するジョブが用意されています。「サポート > 管理者ガイド(R7) > 参照されていないファイルの削除ジョブ」をお読みください。

物理的なファイルを同時に削除する 7.11.2

データ削除のタイミングでファイルの実体を削除する方法も用意されています。この方法は上述した「ファイルの実体を upload_dir フォルダに残す理由」に該当しない場合にのみ行なってください。

ビルド後のアプリケーションである $(APPHOME)\webapps\$(APPNAME)\webpage\WEB-INF\web.xml ファイル内の context-param 指定箇所に次の内容を含めます。

<context-param>
  <param-name>file_delete_mode</param-name>
  <param-value>UnsavedFile</param-value>
</context-param>

上記設定を追加後、アプリケーションを再起動します。この設定はアプリケーション全体に適用されます。

編集した web.xml ファイルを $(DEVHOME)\customize\webapp\WEB-INF フォルダに保存することで、以降のビルド処理でこのファイルが反映(上書き)されるようになります。
運用途中に web.xml ファイルを変更した場合、変更(し、再起動した)後の操作で、ファイルの削除処理が機能します。ただし、変更前のファイルは upload_dir フォルダに残ったままとなります。過去データについては、テーブルに格納されているファイル型項目を直接、SQL で検索し、参照されていないファイルを手動で削除してください。

制約

一覧更新、アップロード更新、一括更新、メール受信、メール送信でのファイル削除には未対応です。また、カスタマイズコードで Dao/Service を使った場合も未対応です。これらは将来の Wagby で対応する計画です。

実行例

詳細表示画面と一覧表示画面でそれぞれ、画像の幅と高さを指定することができます。(図12,図13)

図12 詳細表示画面の画像サイズを幅32ピクセルとした
図13 一覧表示画面の画像サイズを幅32ピクセルとした

定義方法

モデル項目詳細定義の出力制御タブを選択します。詳細画面と一覧画面のタブにある「画像のサイズ」を指定します。単位はピクセルです。幅と高さの両方を指定できますが、一方を指定した場合、もう一方は比率を維持して自動調整されます。

図14 詳細画面の画像サイズ幅を指定する
図15 一覧画面の画像サイズ幅を指定する

実行例

ファイル名を非表示にすることができます。(図16)

図16 ファイル名を非表示にする

定義方法

モデル項目詳細定義の出力制御タブを選択します。詳細画面と一覧画面のタブにある「ファイル名(URL)を表示する」のチェックをはずします。(標準ではチェックされています。)

図17 ファイル名を表示する、のチェックをはずす

ファイルサイズを指定する

アップロードするファイルの最小サイズおよび最大サイズを指定することができます。単位は「バイト」です。

図21 ファイルサイズを1メガバイトから100メガバイトの範囲とする

指定サイズに満たない、または指定サイズを超えた場合は図22のようなエラーメッセージが表示されます。

図22 サイズエラー
サイズを指定する場合、"K" や "M" での指定も行えます。(大文字小文字は区別しません。) 1Kは1024バイト、1Mは1024Kバイトです。
サイズ指定の数値は、整数型のみ使用できます。小数点は使用できません。

ファイル拡張子を指定する

アップロードするファイルの拡張子を指定することができます。複数個の場合はコンマ「,」で区切ります。

図23 ファイル拡張子が png と jpg のみを許容する

許容されるファイル拡張子でない場合、図24のようなエラーメッセージが表示されます。

図24 拡張子エラー
上記例では PNG と JPG も許容されます。大文字小文字は区別しません。

自動生成された WEB-INF\classes\savedir.properties.UTF8 ファイルをテキストエディタで開きます。 次のように記載されています。

# ライセンスファイル
savedir.jfclicenseholder=../../upload_dir/jfclicenseholder
# メールテンプレート
savedir.jfcmailtemplate=../../upload_dir/jfcmailtemplate
# 帳票テンプレート
savedir.jfcreporttemplate=../../upload_dir/jfcreporttemplate
# 顧客
savedir.customer=../../upload_dir/customer

標準では、起点ディレクトリ (wagbyapp\bin) からの相対パスとなっています。保存先はモデル毎に指定できるようになっています。

ここで、変更したいモデルのみエントリを残して編集します。変更が不要なモデルは、もともとのファイルから記述を削除します。 例えば「顧客」モデルのみ保存先を変更したい場合は、次のようになります。

# 顧客
savedir.customer=C://Users//YOURNAME//Desktop//newfolder

編集したファイルを customize\resources フォルダに、mysavedir.properties.UTF8 というファイル名で保存します。

運用開始後に変更した場合

運用途中に mysavedir.properties.UTF8 ファイルを作成した場合、次のルールとなります。

  • 変更前に登録したファイルは、変更前に指定されていたフォルダを参照します。
  • 変更後に登録したファイルは、新しく指定されたフォルダを参照します。
このため、変更前に指定されていたフォルダは消さないようにご注意ください。

その他の情報

「サポート > Wagby Developer Network(R7) > Javaを用いたカスタマイズ > リソースファイル」をお読みください。

ファイル型項目で登録されたファイルをクリックしてダウンロードしたとき、ログが出力されます。

2016-xx-xx 00:01:02 [INFO wagbyDownload2 _jspService] (admin) Download test.xls
  • 画像ファイルの場合、ログは出力されません。(ファイル拡張子が jpg/jpeg/png/gif/bmp の場合、画像ファイルと解釈します。)
  • ファイルをクリックすると、ダウンロードを行うかどうかを確認するためのダイアログが表示されることがあります。その時点でログは出力されています。そのため(ダウンロードを)キャンセルしても、ログ上ではダウンロードした、と記録されます。
  • ダウンロードではなく、指定したアプリケーションで開いた場合でも、ログ上ではダウンロードした、と記録されます。