Home  >  Article  >  Backend Development  >  Classes and calling examples for php to implement ftp upload

Classes and calling examples for php to implement ftp upload

WBOY
WBOYOriginal
2016-07-25 09:00:58860browse
An ftp upload class is written based on examples on the Internet. It is very simple and suitable for reference by novice friends.

1. File upload class ftp.class.php

<?php
// ----------------------------------
// File name   :class.ftp.php
// Description : FTP上传类
// Requirement : PHP5
// createtime: 2012-05-23
// Author: lisc http://bbs.it-home.org
// -----------------------------------------
//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. Call example 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;
 }
?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn