我想通过FTP上传文件上传文件。
<html>
<body>
<form enctype="multipart/form-data" action="upload_file.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
这是PHP文件:
<?php
$ftp_server = "xxx";
$ftp_username = "xxx";
$ftp_password = "xxx";
// setup of connection
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server");
// login
if (@ftp_login($conn_id, $ftp_username, $ftp_password))
{
echo "conectd as $ftp_username@$ftp_server\n";
}
else
{
echo "could not connect as $ftp_username\n";
}
$file = $_FILES["file"]["name"];
$remote_file_path = "/home/www/lifestyle69/import/".$file;
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII);
ftp_close($conn_id);
echo "\n\nconnection closed";
?>
FTP连接成功连接但文件无处。
有人能帮助我吗?
谢谢!
答案 0 :(得分:6)
因为您有<input name="uploadedfile" type="file" />
:
$file = $_FILES["file"]["name"]; // wrong
$file = $_FILES["uploadedfile"]["name"]; // right
因为你需要PHP存储的临时副本的文件名,它存在于服务器上:
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"],
FTP_ASCII); // right
有关$ _FILES的详细信息,请参阅PHP documentation。
答案 1 :(得分:1)
您确定要上传的文件夹具有正确的权限吗?尝试将其修改为777并查看是否有效。
答案 2 :(得分:1)
该文件存储在具有临时名称的服务器上,因此当您尝试上载$_FILES['file']['name']
时,它会失败,因为具有此类名称的文件不存在。相反,您应该使用ftp_put()
$_FILES['file']['tmp_name']
它解释得更好here