0

ここで少し助けが必要です:

HTML アップロード フォームからファイルを取得します。そして、$File に「ターゲット」ファイル名があります。

私がこれを行うとき:

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

すべて正常に動作します。同じ番号が2回出ます。

ただし、filesize()の最初の呼び出しを削除すると、「0」(ゼロ) が返されます。

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

助言がありますか?私は何を間違っていますか?コピーのサイズを取得する前に、「元の」ファイルのファイルサイズを取得する必要があるのはなぜですか?

(これが実際の処理です。元のファイルに対してfilesize()を呼び出す必要があります。別のファイルのsleep()filesize()の呼び出しも役に立ちません。)

システム:

  • アパッチ 2.0
  • PHP 5.2.6
  • Debian Linux (レニー)
4

3 に答える 3

2

このファイルの大きさは?コピーを行ってから、すぐにファイルを記述しています。これが問題でしょうか?

組み込みの move_uploaded_file() 関数は同じ動作をしますか?

于 2010-04-09T17:08:46.253 に答える
0

これはどう:

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);
于 2010-04-09T17:53:43.657 に答える
0

これを試して:

copy($_FILES['binfile']['tmp_name'], $File);
clearstatcache();
$filesize = $_FILES['binfile']['size'];
echo '<hr>' . $filesize;
于 2010-04-09T17:14:32.803 に答える