2011-01-26 17 views
1

投稿者:commentors adviceの後。PHP APCプログレスバー

のindex.php

<?php 
$id = uniqid(""); 
?> 
</head> 

<body> 
<form method="post" action="frame.php" target="upload_iframe" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo $id; ?>"/> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
<iframe name="upload_iframe" style="width: 400px; height: 100px;"> 
</iframe> 

frame.php

<?php 
if(isset($_POST['progress_key'])) { 
    echo "hey1"; 
    $status = apc_fetch('upload_'.$_POST['progress_key']); 
    echo $status['current']/$status['total']*100; 
} 
echo "hey2"; 
?> 

はまだdoesntの仕事:(、私も私が間違っているつもりですどこ。フレームでPOSTフォームデータを取得する?

いけません

よろしくお願いします。

+0

'apc.rfc1867_prefix'と' apc.rfc1867_name'のphp.iniの値は何ですか?隠しフィールドの 'name'属性の値は' apc.rfc1867_name'に対応し、 'apc_fetch'呼び出しの接頭辞は' apc.rfc1867_prefix'に対応する必要があります。 –

+0

MAMPでは、私は好みからAPCを選択し、confの中にいる> PHP5> php.iniの更新: apc.rfc1867 = apc.max_file_size = 200M upload_max_filesizeで= 200M post_max_sizeの= 200M –

答えて

0

APCファイルのアップロードメカニズムを使用する場合は、追加のパラメータを追加する必要がありますあなたのフォームはアップロードされているファイルを識別し、あなたのapc_fetchの鍵です。ファイルとして

<?php $id = uniqid(time()); ?>
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="myUniProgressKey" value="<?php echo $id; ?>"/>

キーupload . $idの値を使用して、プログレスバーを表示するために必要な情報が含まれますアップロードされます。あなたが持っているapc_fetchコールを使用して、サーバーにポーリングを行うajaxに簡単にアクセスできます。これは、アップロードページがユーザーが現在のページを更新しないように指示します。過去にiframeを使用して、サーバーをポーリングする間隔を開始しました。アップロードが完了すると、同じiframeに素敵な完全なメッセージを表示できます。

+0

に更新されたコードで私を助けてくださいポストでは、まだいくつかの変更を加えていない作品。 http://pastie.org/1500354非常に感謝しているヘルプ。 :) –

+0

これをテストする方法の1つは、あなたの進捗キーをハードコードし、ハードコードされた進捗キーを使って 'apc_fetch'の出力をダンプする別のページを設定することです。大きなファイルのアップロードを開始し、テストページを更新して実際に何が戻ってくるかを確認します。また、これのajaxビットを実装しましたか?実際の進捗バ​​ー自体を実装する必要があることは承知していますか? apcはアップロードの進捗状況を追跡しますが、進捗バーは表示されません。 –

+0

さて、あなたが示唆していることは本当にありません。小さなコードの例などを教えてください。それは本当に役立つだろう。そして今、私の最大の問題は、私はポスト価値を得ることさえありません!また、私は、私のAjaxが実装されていると思います。現在のコードでは、pastieの例で2つの異なるページがあります。iframeに1つの負荷を与えました。 :)私はそれがバーではないが、私は$ステータスを取得することができます、私はバーを実装することができます.. :) –

関連する問題