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