1

ダイアログ ボックスを表示せずに gwt-ext からファイルをアップロードしようとしています。これを行うために、FormPanel を作成し、それに適切なフィールドを追加しました。次に、form.submit() を実行しました。これはうまくいかないようです。理由はありますか?コードを以下に示します。

final FormPanel uploadForm = new FormPanel();
uploadForm.setVisible(false);
uploadForm.setFileUpload(true);
final TextField sourceFile = new TextField("File", "sourceFile");
sourceFile.setVisible(false);
sourceFile.setInputType("file");
sourceFile.setValue("/tmp/test.txt");

final TextField targetFile = new TextField("Upload As", "targetFile");
targetFile.setVisible(false);
targetFile.setValue("different.txt");

uploadForm.add(sourceFile);
uploadForm.add(targetFile);

final String url = GWT.getModuleBaseURL() + "/uploadFile";
uploadForm.getForm().submit(url, null, Connection.POST, null, false);

サーバー側で単純な html フォームを使用してサーブレットをテストしたところ、正しく動作しました。GWT-EXT バージョンのみが動作しないようです。

4

2 に答える 2

0

上記のコードが機能しない理由がわかりました。ここでの主な問題は、アップロード フォームがレンダリングされていない場合、および/またはユーザーが送信ボタンをクリックした後にフォームが変更された場合、セキュリティ上の理由により、ファイルのアップロードがブラウザによってブロックされることです。ブラウザがそのようなことを許可した場合、システム上のファイルは、ユーザーの知らないうちに簡単にアップロードできます。

上記の問題の解決策は、ダイアログ ボックスを表示し、送信ボタンのイベント ハンドラーでアップロードを行い、フォーム リスナーの onActionComplete メソッドで他の処理を行うことです。

于 2008-12-12T19:44:42.453 に答える
0

ダイアログボックスなしでアップロードするという全体的な考えは、私にはセキュリティ違反のように見えます. 上記が可能であれば、開くたびにパスワードファイルを盗むアプリケーションを想像できます。

于 2009-06-04T14:18:18.323 に答える