アップロードの進捗を表示しつつアップロードするサンプル
2006年03月17日-
スポンサード リンク
tomas.epineer.se Asynchronous file upload with AJAX progress bar in PHP
One of the few things that I find lacking in PHP is the ability to report the progress of a file upload. This means that file uploads, especially uploads of larger files, can be extremely frustrating for end users when they don’t know if the upload is progressing or if it has stalled or if it has even started.
アップロードの進捗を表示しつつアップロードするサンプルが公開されています。

(ファイルを選択した時点でアップロードが開始されます)
仕組みとしては、不可視化したIFRAMEに対してFORMのSubmitを行い、ここでアップロードを行います。
(不可視のIFRAMEに対してSubmitを行うことで、画面の遷移を防ぐことが可能です。)
不可視のIFRAMEに対してSubmitを行った時点でJavascriptのコードも同時に起動し、prototype.js の Ajax.PeriodicalUpdater によって指定のDIVを定期的にAjax更新する形で進捗グラフを描画します。
この時、Ajaxで取得するのは、アップロード完了済みのバイト数で、この値を短い間隔でサーバに順次問い合わせることでリアルタイムに進捗グラフが描画できます。
該当ファイルのアップロード完了済みのバイト数を取得するためには、アップロードを実行したファイルを識別しないといけません。
そのため、アップロード開始時にファイルの識別子をサーバに送信しておき、問い合わせ毎にその識別子を指定してリクエストします。
そうすることで、目的のファイルのファイルサイズを得るような少々面倒な構造になっているようです。
サンプルファイルは、File & Linksの「You can download the complete source code here. 」の部分でダウンロードが出来ます。
実装はなかなか厄介ですが、結構技術的にも面白い部分ですし、こういった仕組みが必須なサービスってあると思いますのでチェックしておきましょう。
スポンサード リンク
最新のブログ記事(新着順)
- 2010年3月15日 管理人のブックマーク
- PHPユーザのためのPythonとGoogle App Engine勉強会
- 2chのdat落ちしたスレを右クリックで即座に蘇生させられるFirefoxアドオン「fire2chDat」
- FlashがブロックされているかJavaScriptで判断できるようになる「flashblockdetector」
- 2010年3月14日 管理人のブックマーク
- かなりカッコいいPHP&MySQLなAjax式コンタクトフォーム
- PHPによってCSSを動的に出力する初心者向けチュートリアル
- ジェスチャーの指示が超分かりやすくできるベクターアイコン集「Gesturecons」
- CSSを使ったOperaブラウザのロゴがすごい
- スクロールさせると日が沈んでいく面白いサイト「Morning Sunset」


















間違いの指摘をしていただける方はメールでお願いします(クリック)


