説明
DEXTUploadX5はファイルアップロード操作に4つのモードをサポートする。
- ORAF (デフォルト): アップロードするすべてのファイルを一回のリクエストで送信する。アップロードが完了すると応答データが一つになる。
- OROF: アップロードするファイルの数だけリクエストを行う。アップロードが完了するとファイル数分のレスポンスデータが生成される。
- EXTS: OROFと同じですが、大容量アップロードで、個別または全体のファイルのサイズが2GBを超える場合に使用されます。(大容量ファイルアップロードの例を参照).
- AWSS3: Amazon S3にファイルをアップロードするときに使います。(Amazon S3ファイルアップロードの例を参照).
var dx = dx5.get("component-id");
// アップロードモードをORAF, OROF, EXTS, AWSS3に設定する。
dx.setUploadMode("ORAF");
// すべてのローカルファイルをアップロードする。
dx.upload("AUTO");
// 選択したローカルファイルをすべてアップロードする。
dx.upload("SELECTED");
// チェックされたローカルファイルをすべてアップロードする。
dx.upload("CHECKED");
ORAFでファイルをアップロードすると、サーバー側でアップロードされたファイルを一度に取得できる。
# サーバー側
...
dextnj = new FileUpload(request, env);
// クライアントから送られてきたデータのうち、ファイルデータ部分をすべて一時ファイルとして保存する。
// テンポラリ保存場所は Environment # setTempRepository メソッドで設定します。
dextnj.prepare();
// FileUpload # getFileItemメソッドで1つずつ呼び出すこともできますが、getFileItemsメソッドでコレクションオブジェクトを取得します。
List<FileItem> items = dextnj.getFileItems();
// アップロードされたモード・ファイルを、同じループ・ステートメントを使って一度に取得します。
FileItem file = null;
for (int i = 0; i < items.size(); i++) {
file = items.get(i);
if (file.isEmpty() == false) {
file.save();
...
}
}
...
OROFでファイルをアップロードする場合、サーバーサイドからのリクエストは1ファイルにつき1回となる。
# サーバー側
...
dextnj = new FileUpload(request, env);
dextnj.prepare();
// OROFなので、サーバーに渡されるファイルフォーム要素は1つだけです。
FileItem file = dextnj.getFileItem(0);
if (file.isEmpty() == false) {
file.save();
...
}
...
クライアントはわずかな設定でアップロード方法を変更できますが、サーバー側のコードではアップロード方法によってまったく異なる設定が可能です。
例
|
|
|
DEXTUploadX5は異なるクライアント製品とは異なり、フォームデータと仮想ファイル情報(削除済み)をサーバーに送信せず、純粋にローカルリソースだけをアップロードします。したがって、ファイル削除操作のようなアクションをサーバーに送信したい場合、アップロード処理ではなく、AjaxまたはForm submitを使用する必要があります。
|