現在私が知っている方法は 2 つあります。1 つは PHP の創設者である Rasmus Lerdorf によって作成された APC 拡張モジュールを使用する方法です (http://pecl.php.net/package/apc)。 PECL 拡張機能。uploadprogress モジュールの実装 (http://pecl.php.net/package/uploadprogress) 参考として、個別の実装の例を 2 つ示します。より柔軟なアプリケーションの場合は、必要に応じて変更できます。
APC 実装方法:
APC をインストールします。インストールについては公式ドキュメントを参照してください。PECL モジュールのインストール方法を使用すると、ここでは説明していませんが、迅速かつ簡単に行うことができます
php.ini を設定しますパラメータを設定します。 apc.rfc1867= 1. APC がアップロード プログレス バー機能をサポートできるようにします。APC ソース コードのドキュメントに手順があります。
コード例:
コードをコピーします。 コードは次のとおりです。
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //アップロード リクエスト
$status = apc_fetch(' Upload_' . $_POST['APC_UPLOAD_PROGRESS']);
$status['done'] = 1; // クライアント ページの ajax 呼び出しに出力します。自分自身をドキュメント化します
exit;
} elseif (isset( $_GET['progress_key'])) { //アップロードの進行状況を読み取ります
$status = apc_fetch('upload_'.$_GET['progress_key']) ;
echo json_encode($status);
exit;
} else {
//その他のコード (アップロード フォームなど)
Uploadprogress モジュールの実装方法:
コードをコピー コードは次のとおりです:
if ($_SERVER['REQUEST_METHOD']=='POST) ') { if (is_uploaded_file($_FILES['upfile']['tmp_name']) ) {
$upload_dir = 'your_path/'
$ext = strrchr($_FILES['video'; ]['name'], '.');
$sessid = $_POST['UPLOAD_ID ENTIFIER '] ;
$tmpfile = $sessid ; .$ext;
if (move_uploaded_file($_FILES['upfile'] ['tmp_name'], $tmpfile)) {
>} elseif (!empty( $_GET['sessid'])) {
header("有効期限: 1997 年 7 月 26 日月曜日 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header("キャッシュ制御: ストアなし、キャッシュなし、必須再検証");
ヘッダー("キャッシュ制御: post -check=0、pre-check=0"、false) );
header("Pragma: no-cache");
header("Content-Type:text/html;charset=UTF-8") ;
$unique_id = $_GET[ 'sessid'];
$uploadvalues = Uploadprogress_get_info($unique_id);
if (is_array($uploadvalues)) {
echo json_encode ($uploadvalues);
} //進行状況の読み取りに失敗しました。追加の処理ロジック
}
} else {
} //アップロード フォームを表示します
}