2

ファイルアップロード用の ajax スタイルの送信フォームを実装しようとしています。

プログレスバーを正常に更新できました。つまり、ロジック全体が正常に機能します。

しかし、私はFacebookを見ました。見つけた -

1) Facebook では、複数の画像を選択できます。-> 私はそうすることができます

2) すべての画像が選択されたら。それらは同時にアップロードを開始し、ユーザーは各アップロードの個々の進行状況を確認できます。

分析: 私の場合、送信時に、ユーザーが選択したすべての画像を一度に送信するため、個々のファイルの送信ではなく、完全な送信の進行状況バーが表示されます。

私の質問は次のとおりです。選択したすべての画像で並列アップロードを実現し、すべての個別の進行状況を取得するにはどうすればよいですか?

4

2 に答える 2

1

同時に複数のファイルをアップロードするには、次の手順に従います-

  1. 最初に、フォームが送信されるときに、選択したファイルの数に応じて、javascript を使用して、その数とはかなり異なる数の独立した ajax リクエストを動的に作成します (Jquery が役立ちます)。
  2. ファイルをアップロードしている間、JavaScript と 1 つのサーバー スクリプトを使用して、アップロードするデータがどれだけ残っているかを監視できます。これに基づいて、アップロード中の各ファイルの進行状況バーを表示できます。
  3. 次にサーバー側では、心配する必要はありません。なぜなら、php スクリプトは、すべての要求を個別に受け取るものを書くからです。

アップロードの進行状況を監視する方法

小さなファイルでは、アップロードが非常に高速であるため、正確な進行状況の詳細を取得できない場合がありますが、大きなファイルでは監視できます。


あなたがしなければならないことは、$_SESSIONファイルのアップロードが開始されたときにファイルのアップロードが開始され、処理されたデータの量が保存されるときに、セッション変数を介してアップロードされた % ファイルの量に関する情報を生成する別の PHP ファイルを作成することです。 (バイト単位)およびキー内のファイルサイズ(バイト単位)はそれぞれ何bytes_processedですかcontent_length
そして、その情報は、別のリクエストを送信して JavaScript を介して処理します。そして、そのリクエストはバインドによってアップロードされるファイルごとに行われ、限られた時間 (1 秒かもしれません) の後setTimeout()、ファイルが 100% アップロードされるまでの進行状況を知るためのリクエストを再度送信します。

于 2013-10-18T15:40:18.677 に答える