Pages

Sunday, 9 June 2013

用php实现FTP上传本地文件

用php和ftp的相关函数,实现ftp上传文件,顺便加上登录才能上传的功能。

    代码:
 <?php

//配置数据
$ftp_server="";//FTP服务器
$ftp_user_name="";//FTP用户名
$ftp_user_pass="";//FTP用户密码
$ftp_up_dir="";//上传到哪个目录
$ftp_site_url="";//目录访问URL地址,后面加上/
$admin="admin";//管理员用户名
$adminpw="admin";//管理员密码

session_start();

//退出登录
if($_GET['action']=="logout"){
$_SESSION['pw']="";
$_SESSION['user']="";
}

//保存登录状态
if($_POST['pw']==$adminpw && $_POST['user']==$admin){
$_SESSION['pw']=$adminpw;
$_SESSION['user']=$admin;
}

if($_SESSION['pw']!=$adminpw || $_SESSION['user']!=$admin)
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>请登录</title>
</head>
<body>
<form action="<?php $n = explode('/',$_SERVER['PHP_SELF']); echo $n[count($n)-1]; ?>" method="post">
<label for="file">管理账户:</label><input type="text" name="user" id="user" /> <br>
<label for="file">管理密码:</label><input type="password" name="pw" id="pw" />
<br />
<input type="submit" name="submit" value="Login" />
</form>
</body>
</html>
<?
exit();
}


if(!$_FILES)
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FTP远程上传</title>
</head>
<body>
<form action="<?php $n = explode('/',$_SERVER['PHP_SELF']); echo $n[count($n)-1]; ?>" method="post"
enctype="multipart/form-data">
<label for="file">文件名称:</label>
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="上传" />
</form>
<p><a href="?action=logout">退出</a></p>
</body>
</html>
<?php
}
else
{

$file = date('y-m-d_').rand(1,999999999).'_'.$_FILES["file"]["name"];

// 连接FTP
$conn = ftp_connect($ftp_server);
$login_result = ftp_login($conn, $ftp_user_name, $ftp_user_pass);

//改编目录
ftp_chdir($conn,$ftp_up_dir);

// 上传
if(ftp_put($conn, $file,$_FILES["file"]["tmp_name"] , FTP_ASCII)) {
    $cue = "上传文件 $file 成功.<br />文件访问地址: <a href='$ftp_site_url$file' target='_blank'>$ftp_site_url".$file."</a>";
} else {
    $cue = "上传文件 $file 时出错";
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传结果</title>
</head>
<body>
<p><?php echo $cue; ?></p>
<p><a href="">返回继续上传</a></p> <p><a href="?action=logout">退出</a></p>
</body>
</html>
<?php

// 关闭FTP连接
ftp_close($conn);
}
?>