PHP通过FTP上传文件详解介绍
本文章来总结几个利用php中的ftp功能来实现通过FTP上传文件,有需要学习的朋友可参考参考.
ftp_get() 函数从 FTP 服务器上下载一个文件,若成功则返回 true,失败则返回 false.
语法:ftp_get(ftp_connection,local,remote,mode,resume)
ftp_connect() 函数建立一个新的 FTP 连接,若成功,则返回一个连接标识,否则返回 false.
语法:ftp_connect(host,port,timeout)
ftp_login() 函数登录 FTP 服务器,若成功则返回 true,失败则返回 false 并发出一个警告.
语法:ftp_login(ftp_connection,username,password)
三个函数己经介绍好了,现在开始了.
例1,代码如下:
- $ftp_server = "*.*.*.*";
- $ftp_user = "lu";
- $ftp_pass = "love you";
- // set up a connection or die
- $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
- $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
- if ((!$conn_id) || (!$login_result)) {
- echo "FTP connection has failed!";
- echo "Attempted to connect to $ftp_server for user $ftp_user_name";
- exit;
- } else {
- echo "Connected to $ftp_server, for user $ftp_user_name";
- }
- // try to login
- $filename=date('Ymd').".xml";
- $source_file="/usr/local/IVR/sendwireless/xml/data/".$filename; //源地址
- echo $source_file;
- $destination_file="/ITC/admin/logstat/ftplog/".$filename; //目标地址
- $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY) or die("Couldn't connect to $ftp_server");
- ftp_quit($conn_id);
- if (!$upload) {
- echo "FTP upload has failed!";
- } else {
- echo "Uploaded $source_file to $ftp_server as $destination_file";
- }
- ftp_close($conn_id);
上传时先传至本地对文件作必要的修改,如加水印等等操作,然后再通过FTP传至远程服务器.
例2,代码如下:
- //上传图片
- if ($_FILES['pic']['name'])
- {
- $file_path='/opt/www/img/';
- $pic = upload('pic', $filename, 'jpg|jpeg|gif|bmp|png', $file_path);
- if(!$pic)
- {
- echo "图片上传失败!";
- exit;
- }
- require_once(ROOT_PATH . 'Lib/Class/Ftp.class.php');
- $ftp = new ftp("127.0.0.1","gamezeroftp","123456","/opt/www");
- $localfile='/opt/www/img/'.$pic;
- $remotefile='/opt/www/gamepics/'.$pic;
- $ftpput = $ftp->put($localfile, $remotefile); //FTP上传原图到远程服务器
- if(!$ftpput){
- echo "上传图片到远程服务器失败!";
- }
- $ftp->bye(); //关闭FTP连接
- }
附上FTP操作类,代码如下:
- ftpUrl=$ftpUrl;
- }
- if($ftpUser){
- $this->ftpUser=$ftpUser;
- }
- if($ftpPass){
- $this->ftpPass=$ftpPass;
- }
- if($ftpUrl){
- $this->ftpDir=$ftpDir;
- }
- if ($this->ftpR = ftp_connect($this->ftpUrl, 21)) {
- if (ftp_login($this->ftpR, $this->ftpUser, $this->ftpPass)) {
- if (!emptyempty($this->ftpDir)) {
- ftp_chdir($this->ftpR, $this->ftpDir);
- }
- ftp_pasv($this->ftpR, true);//R 启用被动模式;
- $status = 1;
- } else {
- $status = 3;
- }
- } else {
- $status = 2;
- }
- }
- //R 切换目录;
- function cd($dir) {
- return ftp_chdir($this->ftpR, $dir);
- }
- //R 返回当前路劲;
- function pwd() {
- return ftp_pwd($this->ftpR);
- }
- //R 创建目录
- function mkdir($directory) {
- return ftp_mkdir($this->ftpR,$directory);
- }
- //R 删除目录
- function rmdir($directory) {
- return ftp_rmdir($this->ftpR,$directory);
- }
- //R 上传文件;
- function put($localFile, $remoteFile = '') {
- if ($remoteFile == '') {
- $remoteFile = end(explode('/', $localFile));
- }
- $res = ftp_nb_put($this->ftpR, $remoteFile, $localFile, FTP_BINARY);
- while ($res == FTP_MOREDATA) {
- $res = ftp_nb_continue($this->ftpR);
- }
- if ($res == FTP_FINISHED) {
- return true;
- } elseif ($res == FTP_FAILED) {
- return false;
- }
- }
- //R 下载文件;
- function get($remoteFile, $localFile = '') {
- if ($localFile == '') {
- $localFile = end(explode('/', $remoteFile));
- }
- if (ftp_get($this->ftpR, $localFile, $remoteFile, FTP_BINARY)) {
- $flag = true;
- } else {
- $flag = false;
- }
- return $flag;
- }
- //R 文件大小;
- function size($file) {
- return ftp_size($this->ftpR, $file);
- }
- //R 文件是否存在;
- function isFile($file) {
- if ($this->size($file) >= 0) {
- return true;
- } else {
- return false;
- }
- }
- //R 文件时间
- function fileTime($file) {
- return ftp_mdtm($this->ftpR, $file);
- }
- //R 删除文件;
- function unlink($file) {
- return ftp_delete($this->ftpR, $file);
- }//开源软件:phpfensi.com
- function nlist($dir = '/service/resource/') {
- return ftp_nlist($this->ftpR, $dir);
- }
- //R 关闭连接;
- function bye() {
- return ftp_close($this->ftpR);
- }
- }