Heim > Backend-Entwicklung > PHP-Tutorial > php实现ftp上传的类与调用示例

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

WBOY
Freigeben: 2016-07-25 09:00:58
Original
876 Leute haben es durchsucht
仿照网上的例子写的一个ftp上传类,很简单,适合新手朋友参考。

1、文件上传类 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);
    }
}
?>
Nach dem Login kopieren

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;
 }
?>
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage