php实现ftp上传的类与调用示例

发布时间:2019-09-21编辑:脚本学堂
仿照网上的例子写的一个ftp上传类,很简单,适合新手朋友参考。

1、文件上传类 ftp.class.php

<?php
// ----------------------------------
// File name   :class.ftp.php
// Description : FTP上传类
// requirement : PHP5
// createtime: 2012-05-23
// Author: lisc http://www.jb200.com
// -----------------------------------------
//R FTP 处理;
class ftp {
    var $ftpUrl = '';
    var $ftpUser = '';
    var $ftpPass = '';
    var $ftpDir = '';
    var $ftpR = ''; //R ftp资源;
    var $status = '';
    //R 1:成功;2:无法连接ftp;3:用户错误;
    function ftp($ftpUrl="", $ftpUser="", $ftpPass="", $ftpDir="") {
 if($ftpUrl){
     $this->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 (!empty($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);
    }
    function nlist($dir = '/service/resource/') {
       return ftp_nlist($this->ftpR, $dir);
    }
    //R 关闭连接;
    function bye() {
       return ftp_close($this->ftpR);
    }
}
?>

2、调用示例 uplaod.php

<?php
 $host = FTPHOST;
 $user = USER;
 $pass = PASS;
 $huodong_url = 'http://xxx.com/2012/zhutialbum01'; // 项目访问的url
 $huodong_path = 'zhutialbum01';   // 项目的名字,相同目录下能唯一
 $crc32 = sprintf("%u",crc32($huodong_url));
 $dir1 = ($crc32 % 30);
 $dir2 = (($crc32 * 3) % 30);
 $img_path = sprintf('http://xxx.com/huodong/%s/%s',$dir1,$dir2); // 图片目录
 $img_name = sprintf('%s_%u_%u',$huodong_path,date('YmdHis',time()),rand(1000,9999)); // 图片名字,无扩展名啊
 $filename = $_FILES['img']['name'];
 preg_match('|.(w+)$|', $filename, $ext);//正则表达式匹配出上传文件的扩展名
 $ext = strtolower($ext[1]);//转化成小写
       
 $img_name = $img_name .'.'.$ext;
       
 $destDir = $dir1.'/'.$dir2;//上传目录
 $workDir = TMP_DIR; //本地目录
 move_uploaded_file($_FILES['img']['tmp_name'], $workDir."/".$img_name) or die("Cannot move uploaded file to working directory");

 $ftp = new ftp($host,$user,$pass,"./");
 $localfile = $workDir."/".$img_name;
 $remotefile='/'.$destDir.'/'.$img_name;
 $ftpput = $ftp->put($localfile, $remotefile); //FTP上传原图到远程服务器
 $ftp->bye(); //关闭FTP连接
 unlink($workDir."/".$img_name) or die("Cannot delete uploaded file from working directory -- manual deletion recommended");
 if(!$ftpput){
     return false;  
 }
 else{
     return $img_path.'/'.$img_name;
 }
?>

您可能感兴趣的文章:
php ftp函数应用(范例,ftp类,创建目录函数等)
php自定义ftp类与调用实例
php ftp类(上传、下载、复制、移动等)
仿CodeIgniter的FTP类的实现代码
php ftp文件上传函数的简单例子
php ftp下载文件的代码一例
php使用ftp下载文件的简单例子
php实现文件的自动ftp更新
又一个php FTP上传类
php使用ftp函数实现简单上传功能
php使用ftp函数上传文件的简单例子
使用ftp传送、下载、删除文件的三个例子
php使用ftp函数创建目录(生成静态)
php写的ftp文件上传类
php的ftp函数操作实例
无需重新编译php加入ftp扩展的方法