2012-01-06 10 views
7

PHPアップロードの進行状況の拡張機能を使用して、Webシステムにアップロードされているファイルに関する情報を取得しています。ただし、2GBを超えるファイルの場合は、合計バイト数と残り時間フィールドが負の数として返されます。PHP拡張アップロードの進行状況 - 残りの総バイト数と残り時間が返される

Apacheは、最大3GBのファイルをWebサイトにアップロードできるように設定されています。私はこれを試して、それは動作します。しかし、それはまさに誤って戻ってくる報告です。

これはPHPの値の制限とそれが何であるかを修正するために何ができるのか不思議でした。私はシステムが64ビット整数を使用していると信じています。私は単純に、拡張機能を呼び出して情報を取得するためにhttp://www.ultramegatech.com/blog/2010/10/create-an-upload-progress-bar-with-php-and-jquery/

echo "PHP_INT_MAX: " . PHP_INT_MAX; 
// PHP_INT_MAX: 9223372036854775807 

ここではどのようプログレスバーの作品やインストールされているにいくつかの追加情報があります:

$status = uploadprogress_get_info($unique_form_id); 

どの以下に示すとおり合計バイト、エスタ時間、現在のバイト数を返します(負の合計バイト数で)。

array(11) { 
    ["upload_id"]=> string(32) "ec75a30c24177ec1579aea93b56224f2" 
    ["fieldname"]=> string(9) "comp_data" 
    ["filename"]=> string(15) "Size_2-09GB.zip" 
    ["time_start"]=> string(10) "1325851749" 
    ["time_last"]=> string(10) "1325851758" 
    ["speed_average"]=> string(5) "93011" 
    ["speed_last"]=> string(6) "112618" 
    ["bytes_uploaded"]=> string(6) "837105" 
    ["bytes_total"]=> string(11) "-2048166056" 
    ["files_uploaded"]=> string(1) "1" 
    ["est_sec"]=> string(9) "-76260228" 
} 

更新(2012年1月6日):私はこの拡張機能の開発者に連絡して、洞察を共有できるかどうかを確認しました。

アップデート(2012年1月9日):https://bugs.php.net/bug.php?id=59918

アップデート(2012年1月16日):拡張機能の開発者は、この問題に関する既存のチケットがあることが指摘対応してきた負の値を取り除くために管理しています拡張によって返されます。しかし、返される数値は、Windowsがプロパティウィンドウに表示しているものと比較して、実際の合計バイト数とは関係ありません。

+1

どのようにファイルサイズを取得して表示していますか? – ManseUK

+1

負の数値は整数往復のように聞こえます。おそらく問題のファイルは2GBに近いかそれを上回っていますか? – hakre

+0

はい、上記の質問に記載されているようにファイルが2GBを超えています。 – diggersworld

答えて

2

フロートを使用し、小数点以下を削除する - これは、これらの多数のために動作します:

$filesize = filesize($large_file); 
printf(Filesize: %.0f\n", $filesize); 

あなたは64ビットの整数を使用している場合は、この答えは確認されます:how to have 64 bit integer on PHP?

注:があるものの、 64ビット整数がウィンドウで利用できないことを示すような、その質問に対する別の答え - どのOSを使用していますか?

+0

あなたが提供したリンクで私のintsをチェックしました。彼らは64ビットを使用しています。これを質問に追加しました。私は自分でファイルサイズを取得していない、PHPの拡張機能がそれを提供します。 – diggersworld

関連する問題