2012-04-01 4 views
2

У меня есть интересная проблема. Мне нужно сделать индикатор выполнения из загрузки файла asycronusly php. Я думал, что лучший способ сделать это - до того, как загрузка начнется, скрипт создает файл txt, который также включает имя файла и исходный размер файла.Проблема для определения размера загружаемого файла?

Теперь у нас есть функция ajax, которая вызывает скрипт php, который предназначен для проверки размера локального файла. У меня есть две основные проблемы.

  1. файлов больше 2 ГБ, так размер файла() функция из бизнеса
  2. я пытался найти другой способ, чтобы определить размер локального файла, как это:

.

function getSize($filename) { 

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

К сожалению, второй способ дает мне массу ошибок, предполагая, что я не могу открыть файл, который в настоящее время загружается.

Есть ли способ проверить размер файла, который в настоящее время загружается, а размер файла будет больше 2 ГБ?

Любая помощь очень ценится.

+0

Рассматривали ли вы полностью пропустить PHP и использовать запрос HTTP HEAD, чтобы получить размер файла напрямую с веб-сервера? –

+0

Какая ваша ОС? – safarov

+0

Милан ваш путь выглядит очень интересно, можете ли вы дать мне образец кода, как это сделать, или вы можете выразить больше своих мыслей по этому поводу? – Wermerb

ответ

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

, если я использую fileize() im, получая эту ошибку: filesize() [function.filesize]: stat failed for. Я использую Linux для разработки, но он будет работать на окнах. Обе системы 64 бит. – Wermerb

+0

Вы используете полный путь для файлов? 'filesize ("/full/path/to/download/file ");' – Superbiji

+0

да, я тоже это пробовал, это все равно такое же сообщение об ошибке – Wermerb

Смежные вопросы