一.概要
1.応用シーン
TxtやExcelなど、ファイルサイズの小さなファイルを直接データベースに保存し、帳票からダウンロードしようとする場合に使用します。
2.実現の方向性
アップロード:「ファイルウィジェット」でファイルをアップロードします。書き込み属性を設定したうえで、バイナリストリームとしてデータベースのフィールドに保存します(バイナリデータが保存できるフィールドタイプでなければなりません)。
ファイルが保存できるフィールドタイプはデータベースごとに異なりますが、ここではよくあるデータベースのバイナリデータ保存用のフィールドタイプについて紹介します。
データベース | バイナリデータ保存用のフィールドタイプ |
Sql Sever | image |
Oracle | blob |
MySQL | longblob |
Access | OLE対象 注:AccessはODBCデータ接続を通じてのみアップロード・ダウンロードできます |
ダウンロード:テンプレートのセルにバイナリデータ列をドラッグし、セル属性の その他—内容表示を、ダウンロードリンクでバイナリの内容を表示に設定すれば、ダウンロードできます。
注:本説明はファイルサイズの小さなファイルのアップロード・ダウンロードのみに適用します。ファイルのサイズが大きくなると、より多くのデータベーステーブルの空間がとられるため、その場合はプラグインを利用することを推薦します。
二.例
実際にtxtファイルをMySQLデータベースにアップロード・ダウンロードすることを以て、実現の手順を説明します。
注:Fanruanにデフォルトで搭載されたFRDemoデータベースがSqliteのため、ファイルのダウンロードはサポートされていません。
1.データの準備
1.txtファイルを用意します。例えば、FR使用説明.txt;
2.下記の図のように、データベースで (filename[varchar]、file[Blob])というフィールドを含むデータベーステーブルtestを新規作成します。
3.帳票を設計し、データベースに接続します。詳しい説明はJDBCデータ接続をご参照ください。
2.アップロード
1. A2セルに数式filename(B2)を挿入し、B2セルに「ファイルウィジェット」を追加します。
注:数式ではなく、直接ファイル名をセルに書き込んでもいいですが、その際は拡張子を含めたファイル名を全部入力しなければなりません。その後のダウンロード時にもファイル名が必要なため、不完全なファイル名を入力したら無効な文字化けファイルをダウンロードしてしまうおそれがあります。
2.行を挿入する場合、まずA2セルを選定し、セル属性—その他—行の挿入方式のところを元の値に設定します。そうしないと挿入行の数式が無効になります。
3.下記の図のように、帳票の書き込み属性にビルトインSQLを追加し、列と値をバインドします。
4.テンプレートを保存し、書き込みプレビューをクリックします。B2セルのウィジェットを通して、ローカルファイルを選定すると同ファイルをアップロードできます。具体的には下記の通りです。
5.下記の図のように、アップロードが成功してから書き込みをクリックすると、データベースで同データが表示されます。
3.ダウンロード
テンプレートを改めて設計し、データベースクエリds1を追加します。SQL文を次のように入力し、保存されたデータを絞り込みます。SQL文:select * from test。
セルにフィールドをドラッグし、ファイルフィールドが位置するセルの その他—内容表示のところをダウンロードリンクでバイナリの内容を表示に設定し、「ダウンロードファイル名」を=A2に設定します。下図の通りです。
注:ダウンロードファイル名は必須項目です。記入しない場合、文字化けしたtxtまたはzipファイルがダウンロードされてしまいます。
テンプレートを保存し、書き込みプレビューをクリックしたら、ファイルフィールドがハイパーリンクとして表示されます。ハイパーリンクをクリックするとダウンロードできます。