2012-04-01 74 views
2

我有一個有趣的問題。我需要從一個asycronusly php文件下載進度條。我認爲最好的方法是在下載開始之前腳本製作一個包含文件名和原始文件大小的txt文件。問題確定當前正在下載的文件大小?

現在我們有一個調用php腳本的ajax函數,用來檢查本地文件的大小。我有兩個主要問題。

  1. 文件更大然後2GB所以文件大小()函數是歇業
  2. 我試圖找到一種不同的方式來確定本地文件的大小是這樣的:

function getSize($filename) { 

     $a = fopen($filename, 'r'); 
     fseek($a, 0, SEEK_END); 
     $filesize = ftell($a); 
     fclose($a); 
     return $filesize; 
    } 

不幸的是,第二種方式給了我很多錯誤,假設我無法打開正在下載的文件。

有什麼辦法可以檢查當前正在下載的文件的大小,文件大小是否會大於2 GB?

任何幫助,非常感謝。

+0

你有沒有考慮到完全跳過PHP和使用HTTP HEAD請求,直接將文件大小從網絡服務器? – 2012-04-01 18:27:18

+0

你的操作系統是什麼? – safarov 2012-04-01 18:30:50

+0

米蘭你的方式看起來很有趣,你可以給我一個代碼示例如何做到這一點,或者你可以表達更多的想法嗎? – Wermerb 2012-04-01 18:43:15

回答

1

我找到了解決方案通過使用exec()函數:

exec("ls -s -k /path/to/your/file/".$file_name,$out); 
0

只需更改您的操作系統和PHP以支持64位計算。你仍然可以使用filesize()。 從文件大小()手冊:

Return Values

Returns the size of the file in bytes, or FALSE (and generates an error of level E_WARNING) in case of an error.

Note: Because PHP's integer type is signed and many platforms use 32bit integers, some filesystem functions may return unexpected results for files which are larger than 2GB.

+0

如果我使用filesize()即時通訊收到此錯誤:filesize()[function.filesize]:stat失敗。我正在使用Linux進行開發,但它將在Windows上運行。兩個系統都是64位。 – Wermerb 2012-04-01 18:41:27

+0

你使用文件大小的完整路徑? '文件大小(「/完整/路徑/到/下載/文件」);' – Superbiji 2012-04-01 18:44:12

+0

是的,我試過,以及它仍然是相同的錯誤消息 – Wermerb 2012-04-01 18:58:36