上传文件或多个文件时首先要做的一件事就是检查上传错误。
// Check $_FILES['file_up']['error'] value.
$file_upload=true;
switch ($_FILES['file_up'']['error']) {
case UPLOAD_ERR_INI_SIZE:
echo 'The uploaded file exceeds the upload_max_filesize directive in php.ini.';
$file_upload=false;
break;
case UPLOAD_ERR_FORM_SIZE:
echo 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.';
$file_upload=false;
break;
case UPLOAD_ERR_PARTIAL
echo 'The uploaded file was only partially uploaded.';
$file_upload=false;
break;
case UPLOAD_ERR_NO_FILE:
echo 'No file was uploaded.';
$file_upload=false;
break;
case UPLOAD_ERR_NO_TMP_DIR:
echo 'Missing a temporary folder.';
$file_upload=false;
break;
case UPLOAD_ERR_CANT_WRITE:
echo 'Failed to write file to disk.';
$file_upload=false;
break;
case UPLOAD_ERR_EXTENSION:
echo 'A PHP extension stopped the file upload.';
$file_upload=false;
break;
}
if (! $file_upload) {
// no file so do whatever is appropriate on upload fail
exit;
}
// then the rest of your code
还要注意,我改变$file_upload="false";到$file_upload=false;它更好的使用真正的布尔值=true和=false而不是一个字符串,那么你可以测试他们只需使用if ($file_upload)问是true和if (! $file_upload)要求是它false。
希望这可以确定上传过程中实际发生了什么问题。
现在到您的代码中的其他错误!
最明显的是,您正在从$file_name=$_FILES['file_up']['name'];获取用户上传的文件的文件名,但这只是名称而不是上载文件实际存在的位置。
PHP上传过程是一个2阶段过程,浏览器发送文件并将PHP存储在临时文件中。然后你的代码运行,你得到验证和检查大小和文件类型等等。然后,你应该将临时文件移动到文件系统上的一个permanant文件使用move_file_upload()
现在,因为你实际上并没有存储这个文件在系统上,你可以大概算了这一步,但是这意味着你FTP到其他服务器的文件shoudl从$_FILES['file_up']['tmp'];
中发送,从而改变这一行
$file_name=$_FILES['file_up']['name'];
要
$file_name=$_FILES['file_up']['tmp'];
然后至少你会通过你的FTP连接发送一个真实的文件。