PHP: проблема с размером файла - PullRequest
0 голосов
/ 09 апреля 2010

Мне нужна небольшая помощь здесь:

Я получаю файл из формы загрузки HTML. И у меня есть «целевое» имя файла в $ File.

Когда я делаю это:

copy($_FILES['binfile']['tmp_name'], $File);
echo '<hr>' . filesize($_FILES['binfile']['tmp_name']);
echo '<hr>' . filesize($File);

Все отлично работает. Я получаю один и тот же номер дважды.

Однако, когда я удаляю первый вызов filesize () , я получаю «0» (ноль).

copy($_FILES['binfile']['tmp_name'], $File);
echo '<hr>' . filesize($File);

Есть предложения? Что я делаю неправильно? Почему мне нужно получить размер файла «оригинального» файла, прежде чем я смогу получить размер копии?

(Это действительно так: мне нужно вызвать filesize () для исходного файла. другого файла помогает.)

Система:

  • Apache 2.0
  • PHP 5.2.6
  • Debian Linux (Lenny)

Ответы [ 3 ]

2 голосов
/ 09 апреля 2010

Насколько велик этот файл? Вы делаете копию, а затем заявляете файл сразу. Может ли это быть проблемой?

Дает ли встроенная функция move_uploaded_file () такое же поведение?

0 голосов
/ 09 апреля 2010

Как насчет этого:

copy($_FILES['binfile']['tmp_name'], $File);

clearstatcache();
while (empty(filesize($File)))
    sleep(2);

echo '<hr>' . filesize($File);

ИЛИ попробуйте это:

copy($_FILES['binfile']['tmp_name'], $File);

clearstatcache();
while (!file_exists($File))
    sleep(2);

echo '<hr>' . filesize($File);
0 голосов
/ 09 апреля 2010

Попробуйте это:

copy($_FILES['binfile']['tmp_name'], $File);
clearstatcache();
$filesize = $_FILES['binfile']['size'];
echo '<hr>' . $filesize;
...