$host = 'XXXXXXXXXXX'
$usr = 'XXXXXXXXXXX';
$pwd = 'XXXXXXXXXXX';
$destDir = $_POST['filetype'];
$conn_id=ftp_connect($host);
$success = ftp_login($conn_id,$usr,$pwd);
$rightName = basename($_FILES['uploadfile']['name']);
ftp_pasv($conn_id, true);
if($success)
{
ftp_put($conn_id,$destDir.'/'.$rightName,$_FILES['uploadfile']['tmp_name'],FTP_BINARY) or die('Cannot ftp');
ftp_close($conn_id);
echo ' Upload Successful';
}
表格在这里
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input name="filetype" id="filetype1" /><br />
<input name="uploadfile" type="file" /><br />
<input type="submit" value="Upload File" />
我尝试了多种选择。 'ftp_put'从php的tmp上传位置到一个工作目录,然后到目的地目录,'ftp_put'直接从PHP的临时上传目录到所需的目录但FTP由于某种原因似乎根本不起作用。它只是死了。使用'move_uploaded_files()'进行正常上传非常有效。在一些论坛中提到,为了使ftp工作,我不能有'文件'输入类型,只有一个纯文本框。我不明白为什么需要这样,或者即使它是真的。为什么上面的代码不起作用?我已检查目标文件夹的权限,它不应该是问题。
更新
抱歉,问题是由于文档问题造成的。文档中提到的FTP根目录不正确,代码中使用的FTP根与记录的FTP根目录不同,因此存在问题。
答案 0 :(得分:0)
在PHP中移动文件是一件棘手的事情,因为有几件事在一起玩。