1

私は Tapestry5 を使用する Java 開発者です。jQuery プラグインを使用して、ajax 経由でファイルのアップロードを管理しています。

実際のページが保存されるまで添付ファイルを一時的に保存するための最良の方法を探しています。私の現在のワークフローは、ユーザーが ajax アップロード ボックスまたは gmail の添付ファイルのようにファイルの横に配置された ajax 削除リンクを使用してファイルをアップロード/削除することで構成されています。ファイルがアップロードされ、フォーム内の保存アクションがクリックされるまで、ファイルをデータベースにコミットしたくありません。

現在、フォーム内の保存アクションがクリックされるまで、ファイルをアップロードしてユーザーセッションに保存しています。タブが 1 つしか使用されていない場合、これは問題なく機能しますが、それが最善の方法かどうかはわかりません。

誰か追加の提案はありますか?

4

2 に答える 2

2

少し似たようなことをしなければなりませんでしたが、スタックが少し異なります (ASP.NET MVC)。

私がこの問題を解決した方法は、ページの読み込み時に GUID を生成し、それを非表示の入力の中に詰め込むことでした。データ ストアは、必要なものであれば何でもかまいません (セッション、データベース、ディスクなど - キーの一部として GUID を必ず含めてください)。ユーザーがフォームを保存するときは、非表示の入力データを含めるようにしてください。そうすれば、そのインスタンスの一部であったファイルを識別する独自の方法が得られます。

于 2013-04-19T18:00:54.820 に答える
1

これまでのところ、あなたがしていることは正しいように見えます。また、ユーザーが複数のタブで Web アプリを使用しようとすると、問題が発生する可能性があることも正しいです。あなたができることは次のとおりです。

  1. ファイルが ajax 呼び出しでアップロードされる前に、一意のキーを取得します。(注: ユーザー @Ek0nomik が示唆するように、これはページの生成時に非表示の入力プロパティに含めることもできます)
  2. ファイルがアップロードされるたびに、必ずこのキーも送信してください。
  3. フォームが保存されると、キーが送信され、データベースにコミットする必要があるファイルがわかります。
于 2013-04-19T18:01:57.733 に答える