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

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

// ----------------------------------

// File name :class.ftp.php

// Description : FTP上传类

// Requirement : PHP5

// createtime: 2012-05-23

// Author: lisc http://www.jbxue.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

$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扩展的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值