只是一个简单的介绍/背景信息:
这可以看作是我昨天的问题的第二部分,@Fred-ii非常有帮助。我已经设法纠正了文件路径错误等。
My Problem
如上所述,我成功地将文件上传到服务器(或至少获得成功消息),但当我检查文件夹中的文件时,它不在那里…?事实上,我已经为上传的文件仔细梳理了整个服务器,但没有看到上传的文件。
所有文件都有适当的权限,除了文件权限之外,还有什么会导致这个问题吗?
也许有些东西我必须改变php.ini…但又一次,我不会收到上传成功的消息…?
过去有人发生过这种事吗?
$file_upload="true";
$file_up_size=$_FILES['file_up']['size'];
echo $_FILES['file_up']['name'];
if ($_FILES['file_up']['size']>250000){
$msg=$msg."Your uploaded file size is more than 250KB
so please reduce the file size and then upload.<BR>";
$file_upload="false";
}
if (!($_FILES['file_up']['type'] =="image/jpeg" OR $_FILES['file_up']['type'] =="image/gif"))
{
$msg=$msg."Your uploaded file must be of JPG or GIF. Other file types are not allowed<BR>";
$file_upload="false";
}
$file_name=$_FILES['file_up']['name'];
if($file_upload=="true"){
$ftp_server = "xxxxxxx";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$ftp_username = "xxxxxx";
$ftp_userpass = "xxxxxx";
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
if($login){
echo '<h1>CONNECTED TO FTP</h1>';
$file = $file_name;
// upload file
if (ftp_put($ftp_conn, $file, 'img/userPics/', FTP_BINARY))
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}
}//if file upload == true
}//if result
// close connection
ftp_close($ftp_conn);
上传一个文件或多个文件时,首先要做的一件事是检查上传错误。
// 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的上传过程是一个两阶段的过程,浏览器发送文件,PHP将其存储在临时文件中。然后你的代码运行,你可以验证和检查大小和文件类型等。然后,应该使用move_file_upload()
现在,由于您实际上没有将此文件存储在您的系统上,您可能会忘记这一步,但这意味着您FTP到另一个服务器的文件应该从$_FILES['file_up']['tmp'];
改变这一行
$file_name=$_FILES['file_up']['name'];
$file_name=$_FILES['file_up']['tmp'];
,然后至少你将通过你的FTP连接发送一个真正的文件。