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";
}

两个语句都没有返回。两条路径都存在;一个文件已成功上传,并且仅在第二次上传尝试后才开始发生。

任何想法为什么?感谢您的任何建议。

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,因为文件已移动,那么第二个调用将返回 false,因为文件不再存在。

你最好只做一个简单if / else的 - 第一次调用可以是真或假,所以你不需要重新检查。

于 2012-08-16T20:09:20.877 回答
1

首先,是$uref = APACHE_ROOT . UPLOAD_PATH . $applicant . "_ref_{$email}_{$year}";目录吗?

如果是,那么您正在尝试写入一个目录,如果该目录已经存在,这可能会失败。

另外,只检查一次运行。

第一次,move_file_uploaded将被执行以检查是否为负。这显然是真的,所以它去第二个检查它是否是真的,它返回的是假的。

改为这样做:

$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 回答