2012-02-15 9 views
3

htmlフォームからPHPスクリプトにアップロードされている現在のバイトをログに記録して取得するにはどうすればよいですか?私は後でセッションやログに現在の進捗状況を保存して、別のAJAXスクリプトがそれを取得できるようにします。現在のバイトを読み込むための私の現在のコードですが、動作しません。PHPで現在アップロードされているバイトを取得するには?

$file_type = $_FILES['Filedata']['type']; 
$file_name = $_FILES['Filedata']['name']; 
$file_size = $_FILES['Filedata']['size']; 
$file_tmp = $_FILES['Filedata']['tmp_name']; 

$filePointer = fopen($_FILES['Filedata']['tmp_name'], "rb"); 
$rr=0; 

if ($filePointer!=false){ 
while (!feof($filePointer)){ 
    $fileData = fread($filePointer, 4096); 
    $rr =$rr+strlen($fileData); 
    // Process the contents of the uploaded file here... 
    $_SESSION['fname']=$rr; 
} 

fclose($filePointer); 
} 

move_uploaded_file ($file_tmp, "files/".$file_name); 
+0

PHP5.4が**(is)**素晴らしいことになるもう一つの理由。新しい[ファイルアップロードの進行状況]の例を示します(http://chemicaloliver.net/programming/php-5-4-file-upload-progress-and-html5-progress-bars/)。待って、あなたは最新の5.4リリース候補で遊んでいないという意味ですか?ああ、彼らは**甘さ**です。 – rdlowrey

+0

私の現在のホストが私のためにこれをインストールするかどうか確信していません。私が設定した最高​​のPHP設定は5.3です。5.3でもこの機能を5.3でも使えるでしょうか? – Zakukashi

+0

残念ながら、いいえ。私はホスティング会社が5.4をまだインストールしていないことを疑っている。それは来月に公式にリリースされるべきである。今のところ、以下の回答から解決策をまとめなければなりません。彼らはかなり固いですが、あなたは大丈夫です。共有ホスティングをご利用の場合は、以下の回答でいくつかの問題が発生する可能性があります。仮想プライベートサーバ(vps)を持っている場合は、問題を起こさないでください(またはホストに必要なpecl拡張機能をインストールする必要はありません)。 – rdlowrey

答えて

3

PECLパッケージがあります:http://pecl.php.net/package/uploadprogress

エルス

は、このチェック:あなたはtmpフォルダ内の正しいファイルを見つける必要があり

をし、サイズを測定する。このサイズは、数秒ごとにAJAX経由でクロールされるページに表示する必要があります。問題は、正しいセッションとファイルを照合する方法です。しかし、それは不可能ではありません...

4

アップロードされたバイトには、ファイルが既にアップロードされるまでスクリプトが呼び出されないのでアクセスできません。

サーバーには、APCを持っている必要があり、または類似のPECLパッケージは

http://devzone.zend.com/1812/using-apc-with-php/

それともに持っていけないとHTML5が優れている

http://www.matlus.com/html5-file-upload-with-progress/

HTML5ファイルAPIを使用してインストールファイルを受け取るようにスクリプトを設定するだけでPHP側で何かを変更することはできますが、ユーザーのブラウザがHTML5ファイルapiをサポートする必要があります。

+0

Internet Explorerでこれをやっています。このHTML5アップロードapiがI.Eと互換性があり、商用サービスでそれを使用することが大丈夫なら、それは素晴らしいことです。 – Zakukashi

+0

また、私のホストはAPCのインストールを許可していません。 – Zakukashi

+0

しかし、一部のホストではAPCやその他のpeclパッケージをインストールできないため、HTML5 APIについても言及しました。そして、IEにはHTML5のAPIが9個入っていると思われますが、限られている可能性があります。バージョン10をリリースするとより使いやすくなります。それ以外の場合は、Flash、Java、またはサーバーサイドのperl CGIスクリプト必要なことをすることができる特定の機能 –

関連する問題