説明
ダウンロードとは、HTTP GETで対象を要求した際に、サーバから送られてくるレスポンスデータをブラウザや外部プラグインで開かず、直接ディスクにファイルとして保存することです。
一般に、ダウンロード対象がブラウザで解釈できない形式の場合、ブラウザは添付ファイルとしてダウンロードする。ただし、拡張子がJPGの画像ファイルのように解釈できる場合は、ダウンロードされずにブラウザのウィンドウに表示されます。
ターゲットを開かずに直接ダウンロードするには、ブラウザ自体(コンテキストメニュー-名前を付けて保存)またはサーバーから応答データを送信するときに、ブラウザに強制ダウンロードを指示する応答ヘッダー(Content-Disposition: attachment)を送信する必要があります。
DEXTUploadX5はウェブブラウザの技術を使用するため、ダウンロードではなく開くことができます。したがって、一貫してファイルをダウンロードするためには、サーバーまたはDEXTUploadNJのようなサーバーファイルダウンロードコンポーネントを使用して、応答ヘッダーをオープンではなくダウンロードできるように設定しなければなりません。
この例は、ファイルダウンロード処理のコントローラ(FileServiceControllerクラス)で処理され、common-download.doにマッピングされる。
# サーバーサイド
File target = null;
String fileRoot = request.getSession().getServletContext().getRealPath("/files/attach");
if (key.equals("FID0001")) target = new File(fileRoot, "bridge_509147.jpg");
else if (key.equals("FID0002")) target = new File(fileRoot, "beach_239826.jpg");
else if (key.equals("FID0003")) target = new File(fileRoot, "cosmos (empty) 195779.jpg");
// エンコーディングをUTF-8に設定する。
response.setCharacterEncoding("UTF-8");
if (target == null || target.exists() == false || target.isFile() == false) {
response.sendError(HttpServletResponse.SC_NOT_FOUND, "キーのファイルが見つかりません。");
return null;
} else {
// DEXTUploadNJFileDownloadViewビュークラスを使用してファイルをダウンロードすることができます。
DEXTUploadNJFileDownloadView dextnj = new DEXTUploadNJFileDownloadView(target);
return new ModelAndView(dextnj);
}
DEXTUploadX5単一ファイルのダウンロードと限定された複数ファイルのダウンロードをサポートします(バージョン1.1.0.0以降)。
スクリプトを使用してファイルをダウンロードするには、downloadById, download関数を使用します。
複数ファイルをダウンロードするには、download関数の第2パラメータの値をtrueに設定します。
ダウンロード対象は、downUrl(またはurl)プロパティの値を持つ仮想ファイルでなければなりません。
var dx = dx5.get("component-id");
// downUrlプロパティにダウンロードWebパスが存在する必要があります。
dx.addVirtualFile({ ... name: "bridge_509147.jpg", downUrl: "http://.../service/common-download.do?key=FID0001" });
// 仮想ファイルの一意のIDを使用して、単一ファイルのダウンロードを実行する。
dx.downloadById("Unique ID of the virtual file to download");
// フラグの値に基づいて単一ファイルのダウンロードを実行する。
// AUTO: 最初の仮想ファイルをダウンロードします。
// SELECTED: 選択されたオブジェクトの中から最初の仮想ファイルをダウンロードします。
// CHECKED: チェックされたオブジェクトの中から最初の仮想ファイルをダウンロードします。
dx.download("SELECTED");
// フラグの値に応じて複数のファイルをダウンロードする。
// AUTO: すべての仮想ファイルをダウンロード
// SELECTED: 選択されたすべての仮想ファイルをダウンロード
// CHECKED: チェックされたすべての仮想ファイルをダウンロード
dx.download("SELECTED", true);
単一ファイルのダウンロードと異なり、複数ファイルのダウンロードでは、ブラウザのパフォーマンス上の問題から、ダウンロードされるファイルのサイズが制限されます。
デフォルトは100MBまでです。それ以上のファイルサイズを許可するには、setLimitMultiDownloadSize関数を使用して制限サイズを変更できます。
しかし、この関数はダウンロードが許可されるファイルのサイズを変更するものであって、ブラウザの性能に関係なくダウンロードできるように機能を提供するものではありません。 HTML5の機能を使用してファイルを連続的にダウンロードするには、一時的にダウンロード対象をメモリにロードするため、動画ファイルのような大容量のファイルは適切なマルチファイルのダウンロード対象ではありません。 したがって、大容量のダウンロード、引き継ぎなどの機能が必要な場合は、HDアプリケーションをお勧めします。
// ダウンロード制限サイズを300MBまで設定する。 dx.setLimitMultiDownloadSize(1024 * 1024 * 300);
例
ファイルを追加する |
|
|
|
複数ファイルのダウンロード |
|
(ブラウザは最終的にファイルを保存するため(製品は参加できない)、ダウンロードが完了しても、後でブラウザ自身に問い合わせをしたり、追加の問い合わせがあるかもしれない) |