2

なぜこれが起こっているのか理解できないようです。次のコードを実行すると:

$uref = APACHE_ROOT .  UPLOAD_PATH . $applicant . "_ref_{$email}_{$year}"; 

if ( !move_uploaded_file( $_FILES['file']['tmp_name'], $uref ) ) {
   echo "Move failed";
} elseif ( move_uploaded_file( $_FILES['ref']['tmp_name'], $uref) )     {
    echo "Move succeeded";
}

どちらのステートメントも返されません。両方のパスが存在します。1 つのファイルが正常にアップロードされ、これは 2 回目のアップロード試行後に発生し始めました。

理由はありますか?提案をありがとう。

4

2 に答える 2

4
if ( !move_uploaded_file( $_FILES['file']['tmp_name'], $uref ) ) {
   echo "Move failed";
} elseif ( move_uploaded_file( $_FILES['ref']['tmp_name'], $uref) )     {
    echo "Move succeeded";
}

ファイルが移動されたために最初の呼び出しが true を返した場合、ファイルがもう存在しないため、2 番目の呼び出しは false を返します。

if / else最初の呼び出しは true または false のいずれかになる可能性があるため、再確認する必要はありません。

于 2012-08-16T20:09:20.877 に答える
1

まず、$uref = APACHE_ROOT . UPLOAD_PATH . $applicant . "_ref_{$email}_{$year}";ディレクトリですか?

そうである場合は、ディレクトリに書き込もうとしています。ディレクトリが既に存在する場合、おそらく失敗します。

また、動作確認は一度だけにしてください。

初回move_file_uploadedは、負かどうかをチェックするために実行されます。明らかに真なので、真かどうかを確認するために2番目に進み、偽を返しています。

代わりにこれを行います:

$uref = APACHE_ROOT .  UPLOAD_PATH . $applicant . "_ref_{$email}_{$year}"; 

if(move_uploaded_file( $_FILES['file']['tmp_name'], $uref )){
   echo "Move succeeded";
} else {
   echo "Move failed";
}
于 2012-08-16T20:15:28.977 に答える