PHP には、アップロードの進行状況を追跡する機能が追加されました。「セッションのアップロードの進行状況」を参照してください。
この機能を使用して短いスクリプトを記述し、checkUpload.php
AJAX を使用してステータスを IE9 ページに戻します。
<?php
$_SESSION["upload_progress_123"] = array(
"start_time" => 1234567890, // The request time
"content_length" => 57343257, // POST content length
"bytes_processed" => 453489, // Amount of bytes received and processed
"done" => false, // true when the POST handler has finished, successfully or not
"files" => array(
0 => array(
"field_name" => "file1", // Name of the <input/> field
// The following 3 elements equals those in $_FILES
"name" => "foo.avi",
"tmp_name" => "/tmp/phpxxxxxx",
"error" => 0,
"done" => true, // True when the POST handler has finished handling this file
"start_time" => 1234567890, // When this file has started to be processed
"bytes_processed" => 57343250, // Number of bytes received and processed for this file
),
// An other file, not finished uploading, in the same request
1 => array(
"field_name" => "file2",
"name" => "bar.avi",
"tmp_name" => NULL,
"error" => 0,
"done" => false,
"start_time" => 1234567899,
"bytes_processed" => 54554,
),
)
);
PHP を使用して、アップロード プロセスをキャンセルすることも可能になりました。上記で参照した同じマニュアルページから、次のテキストが得られます。
$_SESSION[$key]["cancel_upload"] キーを TRUE に設定することで、現在進行中のファイルのアップロードをキャンセルすることもできます。同じリクエストで複数のファイルをアップロードする場合、現在進行中のファイルのアップロードと保留中のファイルのアップロードのみがキャンセルされますが、正常に完了したアップロードは削除されません。このようにアップロードがキャンセルされると、$_FILES 配列のエラー キーが UPLOAD_ERR_EXTENSION に設定されます。
PHP ドキュメントでカバーされていない唯一のことは、合計ファイル サイズを取得する方法です。このプロセスの非常に優れたレビューがここにあります: 「PHP マスター | アップロードの進行状況の追跡」