PHP FTP学习笔记

首先,需要配置FTP服务器,笔者的电脑是mac,使用的是xampp集成环境,需要配置ProFT,默认用户‘daemon‘,默认密码‘xampp‘。

ftp_alloc() 为要上传到 FTP 服务器的文件分配空间。       ftp_cdup() 把当前目录改变为 FTP 服务器上的父目录。       ftp_chdir() 改变 FTP 服务器上的当前目录。      ftp_chmod() 通过 FTP 设置文件上的权限。      ftp_close() 关闭 FTP 连接。       ftp_connect() 打开 FTP 连接。    ftp_delete() 删除 FTP 服务器上的文件。    ftp_exec() 在 FTP 上执行一个程序/命令。      ftp_fget() 从FTP服务器上下载一个文件并保存到本地一个已经打开的文件中ftp_fput() 上传一个已打开的文件,并在 FTP 服务器上把它保存为一个文件ftp_get_option() 返回当前 FTP 连接的各种不同的选项设置。     ftp_get() 从 FTP 服务器下载文件。    ftp_login() 登录 FTP 服务器。    ftp_mdtm() 返回指定文件的最后修改时间。   ftp_mkdir() 在 FTP 服务器创建一个新目录。     ftp_nb_continue() 连续获取/发送文件 (non-blocking)。    ftp_nb_fget()     从FTP服务器上下载文件并保存到本地已经打开的文件中(non-blocking)ftp_nb_fput()        上传已打开的文件,并在FTP服务器上把它保存为文件(non-blocking)。  ftp_nb_get() 从 FTP 服务器下载文件 (non-blocking)。ftp_nb_put() 把文件上传到服务器 (non-blocking)。 ftp_nlist() 返回指定目录的文件列表。  ftp_pasv() 返回当前 FTP 被动模式是否打开。  ftp_put() 把文件上传到服务器。  ftp_pwd() 返回当前目录名称。 ftp_quit()  ftp_close() 的别名。  ftp_raw() 向 FTP 服务器发送一个 raw 命令。 ftp_rawlist() 返回指定目录中文件的详细列表。  ftp_rename() 重命名 FTP 服务器上的文件或目录。 ftp_rmdir() 删除 FTP 服务器上的目录。  ftp_set_option() 设置各种 FTP 运行时选项。 ftp_site() 向服务器发送 SITE 命令。 ftp_size() 返回指定文件的大小。ftp_ssl_connect() 打开一个安全的 SSL-FTP 连接。 ftp_systype() 返回远程 FTP 服务器的系统类型标识符。

class FTPUtil {

    public $off;        // 返回操作状态(成功/失败)    public $conn_id;    // FTP连接

    /**     * 方法:FTP连接     * @FTP_HOST -- FTP主机     * @FTP_PORT -- 端口     * @FTP_USER -- 用户名     * @FTP_PASS -- 密码     */    function __construct($FTP_HOST, $FTP_PORT, $FTP_USER, $FTP_PASS) {        $this->conn_id = @ftp_connect($FTP_HOST, $FTP_PORT) or die (‘FTP服务器连接失败‘);

        @ftp_login($this->conn_id, $FTP_USER, $FTP_PASS) or die(‘FTP服务器登录失败‘);        @ftp_pasv($this->conn_id, 1);// 打开被动模拟    }

    /**     * 方法:上传文件     * @path    -- 本地路径     * @newPath -- 上传路径     * @type    -- 若目标目录不存在则新建     */    function up_file($path, $newPath, $type = true) {        if ($type) {            $this->dir_mkdirs($newPath);        }

        $this->off = @ftp_put($this->conn_id, $newPath, $path, FTP_BINARY);        if (!$this->off) {            echo ‘文件上传失败,请检查权限及路径是否正确!‘;        }    }

    /**     * 方法:移动文件     * @path    -- 原路径     * @newPath -- 新路径     * @type    -- 若目标目录不存在则新建     */    function move_file($path, $newPath, $type = true) {        if ($type) {            $this->dir_mkdirs($newPath);        }

        $this->off = @ftp_rename($this->conn_id, $path, $newPath);        if (!$this->off) {            echo "文件移动失败,请检查权限及原路径是否正确!";        }    }

    /**     * 方法:复制文件     * 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径     * @path    -- 原路径     * @newPath -- 新路径     * @type    -- 若目标目录不存在则新建     */    function copy_file($path, $newPath, $type = true) {        $downPath = "c:/tmp.dat";

        $this->off = @ftp_get($this->conn_id, $downPath, $path, FTP_BINARY);// 下载        if (!$this->off) {            echo "文件复制失败,请检查权限及原路径是否正确!";        }        $this->up_file($downPath, $newPath, $type);    }

    /**     * 方法:删除文件     * @path -- 路径     */    function del_file($path) {        $this->off = @ftp_delete($this->conn_id, $path);        if (!$this->off) {            echo "文件删除失败,请检查权限及路径是否正确!";        }    }

    /**     * 方法:生成目录     * @path -- 路径     */    function dir_mkdirs($path) {        $path_arr = explode(‘/‘, $path); // 取目录数组        $file_name = array_pop($path_arr); // 弹出文件名        $path_div = count($path_arr); // 取层数

        foreach ($path_arr as $val) { // 创建目录            if (@ftp_chdir($this->conn_id, $val) == FALSE) {                $tmp = @ftp_mkdir($this->conn_id, $val);                if ($tmp == FALSE) {                    echo "目录创建失败,请检查权限及路径是否正确!";                    exit;                }                @ftp_chdir($this->conn_id, $val);            }        }

        for ($i = 1; $i <= $path_div; $i++) {// 回退到根            @ftp_cdup($this->conn_id);        }    }

    /**     * 方法:关闭FTP连接     */    function close() {        @ftp_close($this->conn_id);    }
时间: 2024-11-08 07:45:36

PHP FTP学习笔记的相关文章

FTP学习笔记

FTP有两个连接方式 1.控制连接 2.数据连接 控制链接 标准端口为21  用于数据传输中的控制 数据连接 标准端口20  用于数据传输中的上传 下载数据 数据传输的连接方式,主动连接 被动连接. 主动连接:服务端从20端口向客户端发起连接请求. 被动连接:服务端从打开一个端口被动的等待客户端的连接. telnet用来远程管理路由器 用户机器  只要网通都可以 默认端口TCP 23 端口 还可以测试端口是否打开 普通用户与管理员用户的区别是许多功能是不具备在远程桌面中 windows是单用户操

C++ Socket 学习笔记

Socket学习笔记 以下均为整理,做参考之用. IP Address IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异. IP地址被用来给Internet上的电脑一个编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把"个人电脑"比作"

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

【转】TCP/IP详解学习笔记(二)

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.

Linux学习笔记033_11进程

ps:(process information,静态的) 显示进程信息,不加参数显示当前终端的进程 a:包括所有终端的进程 x:不属于任何终端的进程,和任何用户无关系的进程 u:显示出进程的拥有人 f:显示进程的附属关系(依赖关系,父子进程) USER:进程的拥有人 PID:进程ID,默认用进程ID排序 VSZ:程序在运行时调用多少虚拟内存 RSS:真实内存 TTY:?不属于任何终端,进入终端之前就运行 STAT:状态,s为睡眠 TIME:进程持续时间 COMMAND:运行这个进程的指令 ps

PHP 数据库驱动、连接数据不同方式学习笔记

相关学习资料 http://www.php.net/manual/zh/refs.database.php http://www.php.net/manual/zh/internals2.pdo.php http://bbs.phpchina.com/thread-184537-1-1.html http://www.metsky.com/archives/660.html http://www.phpbuilder.com/ http://www.w3school.com.cn/php/php

一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装CentOS7 安装.NET Core SDK for CentOS7 搭建ftp服务器 安装mysql 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 环境说明 服务器系统:CentOS 7.3 64位 相关工具:putty.Xftp 服务器软件软件:.n

SystemTap 学习笔记 - 安装篇

https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux 安装 为了部署 SystemTap,需要安装以下两个 RPM 包: systemtap systemtap-runtime 以 root

cubieboard学习笔记

ubieboard学习笔记 2014-05-09  hginvent   阅 5345  转 16 转藏到我的图书馆 微信分享: 入手开发板,刷机肯定是少不了的,就像我们平时刷安卓手机一样.开发板也有很多适配的固件.比如Cubieboard3 Cubietruck就有安卓,debian,ubuntu等定制的固件. Cubieboard3 Cubietruck出厂的固件为安卓,拿到手上电,用HDMI接上电视,没有反应,后来确定是我HDMI切换器的问题.个人比较喜欢debian,去 Cubieboa