2012-02-14 10 views
0

提出したフォームの進捗状況をどうにかしたいのですが。私のスクリプトは、enctype multipart/form-dataを持つシンプルなフォームを使ってファイルをアップロードします。送信機能を起動した後、私は何とか現在のアップロードの進行状況を追跡して処理したいと思います。たとえば、デフォルトでは、フォームが「アップロード中」のときに左下に表示されます(アップロード:10%)。現在進行中のフォームのハンドルを作成するにはどうすればよいですか?提出後にフォームの進捗状況を取得するにはどうすればよいですか?

私がこれまでにフォームに対して行った唯一のことは、送信を検出することです。ここで

$("#form1").submit(function(event) { 
event.preventDefault(); 
alert("submitting"); 
}); 
+1

自分でsthを書き込む代わりに、http://valums.com/ajax-upload/を使用できます。 – Damian

+0

私は商用で必要なので、自分で作る必要があります。 – Zakukashi

+0

実際にはありません。それはMITライセンスの下にありますので、オープンソースのプロジェクトではなく商用で使用することができます(例えば、jQueryはMITの下にあります)。 – Damian

答えて

0

は、一般的なアプローチです:

  1. クライアント:
  2. クライアントタイマーを起動します。フォームデータを送信
  3. クライアント:タイマハンドラでは、のためにAJAXと投票経由でリクエストを送信しますサブミッションの現在のステータス
  4. クライアント:送信が完了するまで、タイマーを再起動します。

サーバー上では、2つの要求ハンドラと共有メモリ構造が必要です。最初の要求ハンドラは要求を処理し、現在のステータスでメモリ構造を更新します。

第2のハンドラは、共有メモリ構造体を読み取り、現在のコンテンツをクライアント上で実行中のタイマーコールバックに返します。

+0

それは非常に有用なアプローチですが、私はどのようにサーバー側を行うのか分かりません。 PHPで共有メモリ構造を使用しました。また、私のPHPスクリプトはmove_uploaded_file()を使用します。ファイルを取得して書き込みます。これでどのように現在のコンテンツのステータスを取得することができますか? – Zakukashi

+0

これはPHPの専門家がおそらく答える新しい質問です。 –

関連する問題