「PDFエクスポート」コマンドや「ファイルダウンロード」コマンドなどを利用して複数のファイルを連続してダウンロードする場合、ブラウザのポップアップブロックにより2つ目以降のファイルがダウンロードできない場合があります。
このような場合、サーバーサイドコマンドを利用して複数のファイルをZipファイルへ圧縮し、ダウンロードすることが可能です。
また、サーバー側で任意のフォルダを作成してZipファイルの作成などの処理をする場合、Webアプリケーションでは複数のユーザーが同時に処理する場合を考慮して処理ごとに異なるフォルダを作成する必要がありますが、このような場合の設定方法も含んでいます。
※
添付のサンプルと合わせて設定内容を確認できます。
サンプルを実行する際は、最初に「※添付ファイルの作成(最初に実行してください)」と書かれた紫色のボタンをクリックして添付ファイルを生成してください。
サーバー側で生成したファイルを添付ファイルとしてレコードに保存する方法は以下を確認してください。
ここでは複数のレコードに含まれる添付ファイルを取得し、Zipファイルへ圧縮してダウンロードする場合を例に説明します。実装は、サーバーサイドコマンドを利用して以下の手順で行います。
-
一時フォルダーやZipファイルで利用する名前を作成します。
Webアプリケーションでは複数のユーザーが同時に機能を利用する可能性があります。サーバー側で一時的なフォルダーやファイルを利用する場合には、処理ごとに重複しないようなフォルダー名やファイル名を考慮する必要があります。
以下の例では、「FG_<ログイン名>_<年月日>_<ランダムな数字>」で名前を生成し利用しています。
実際には、以下数式を設定しており、実行時には「FG_keiko_20230928_17731」のような文字列が生成されます。="FG_"&UserName&"_"&TEXT(TODAY(),"yyyymmdd")&"_"&RANDBETWEEN(10000,99999)
※「変数」に名前を保存することで、生成した値を後の処理で利用します。以下では、「TempFolder」という変数に保存しています。
- 添付ファイルのレコード情報を取得します。
添付ファイルを取得する複数のレコードの情報を変数に取得します。添付ファイルのフィールドを含めて取得します。
※添付のサンプルでは、サーバーサイドコマンドのパラメーターにカンマ区切りのリストでレコードのIDを取得し、レコードを抽出しています。
-
「データベースからのファイル取得」コマンドで添付ファイルのリストを取得します。
Forguncyの添付ファイル型フィールドには複数のファイルを保存できます。そのため、添付ファイル型フィールドの値は配列の値として取得されます。取得した値は「繰り返し」コマンドを使用して1つずつファイルを取得する必要があります。 - 「ファイルのコピー」コマンドで添付ファイルを取得します。
添付ファイルのフィールドに記録されている保存先より、Zipファイル作成用の一時フォルダーへファイルを1つずつコピーします。
3番へも記載したように、「繰り返し」コマンドを使用して処理します。
※「ファイルのコピー」コマンドでは、「出力先フォルダーパス」へ指定したコピー先のフォルダーが存在しない場合、自動的にフォルダーを作成してファイルをコピーするので事前にフォルダーを作成する必要はありません。
- 「ZIPファイルの作成」コマンドでZipファイルを作成します。
ダウンロード用のZipファイルを作成します。「ZIPファイルの作成」コマンドでは、「フォルダーのパス」へZipファイルに圧縮するファイルが含まれるフォルダーを指定します。
作成するZipファイルは、圧縮対象のフォルダー以外の位置に作成してください。
- 「ファイルダウンロード」コマンドで、作成したZipファイルをクライアント側へダウンロードします。
- 「フォルダーの削除」コマンド、「ファイルの削除」コマンドを実行して、Zipファイル用に作成したフォルダーと、作成したZipファイルを削除します。
添付のプロジェクトファイルは、8.0.6.0以降のForguncy Builderで読み込むことができます。
※
サンプルでは、「C」ドライブの「TEMP」フォルダーへ一時フォルダーやZipファイルを作成します。環境に応じて保存先を書き換えてください。詳しくは、サンプル内のサーバーサイドコマンドの「SaveFileBase」変数を確認してください。
検索キーワード: fgcinfo fgcserver