php使用ftp实现文件上传与下载功能


Posted in PHP onJuly 21, 2017

本文实例为大家分享了php ftp文件上传与下载的具体代码,供大家参考,具体内容如下

ftp文件上传

php自带有ftp操作的函数包,一个比较简单实现的ftp文件上传操作可以通过以下几个步骤来完成:

1、确认ftp server的ip地址与port端口信息(如果使用的是默认端口则可以不关心);
2、进行ftp_connect操作,连接到ftp server(需要注意一下是否设置了port参数);
3、进行ftp_login操作,使用ftp用户名和密码进行登录;
4、这里开始区分,如果只需要把文件上传上去,没有其它要求的话,那在这里就可以进行文件上传的ftp_put操作了;如果对上传文件有按照目录存放的需求,那就继续向下进行;
5、使用ftp_nlist获取到给定的ftp目录下的目录与文件名称,检查一下需要的目录是否存在,若不存在则需要进行ftp_mkdir创建目录;
6、 切换到目标目录中ftp_chdir;
7、进行ftp_put操作上传文件;
8、进行ftp_close关闭ftp连接。

以在ftp中按照日期格式目录来进行上传文件的需求,做一个简单的代码实现:

<?php
$host = '10.0.0.42';
$user = 'uftp';
$pwd = 'uftp';

// 进行ftp连接,根据port是否设置,传递的参数会不同
if(empty($port)){
    $f_conn = ftp_connect($host);
}else{
    $f_conn = ftp_connect($host, $port);
}
if(!$f_conn){
    echo "connect fail\n";
    exit(1);
}
echo "connect success\n";

// 进行ftp登录,使用给定的ftp登录用户名和密码进行login
$f_login = ftp_login($f_conn,$user,$pwd);
if(!$f_login){
    echo "login fail\n";
    exit(1);
}
echo "login success\n";

// 获取当前所在的ftp目录
$in_dir = ftp_pwd($f_conn);
if(!$in_dir){
    echo "get dir info fail\n";
    exit(1);
}
echo "$in_dir\n";

// 获取当前所在ftp目录下包含的目录与文件
$exist_dir = ftp_nlist($f_conn, ftp_pwd($f_conn));
print_r($exist_dir);

// 要求是按照日期在ftp目录下创建文件夹作为文件上传存放目录
echo date("Ymd")."\n";
$dir_name = date("Ymd");
// 检查ftp目录下是否已存在当前日期的文件夹,如不存在则进行创建
if(!in_array("$in_dir/$dir_name", $exist_dir)){
    if(!ftp_mkdir($f_conn, $dir_name)){
        echo "mkdir fail\n";
        exit(1);
    }else{
        echo "mkdir $dir_name success\n";
    }
}
// 切换目录
if(!ftp_chdir($f_conn, $dir_name)){
    echo "chdir fail\n";
    exit(1);
}else{
    echo "chdir $dir_name success\n";
}
// 进行文件上传
$result = ftp_put($f_conn, 'bbb.mp3', '/root/liang/ftp/bbb.mp3', FTP_BINARY);
if(!$result){
    echo "upload file fail\n";
    exit(1);
}else{
    echo "upload file success\n";
    exit(0);
}

打印:

root@webdevelop232:~/liang/ftp# php ftp.php 
connect success
login success
/home/uftp
Array
(
  [0] => /home/uftp/Kalimba.mp3
  [1] => /home/uftp/test.txt
)
20170721
mkdir 20170721 success
chdir 20170721 success
upload file success

可以看到打印的操作成功了,这时候去ftp server的目录下,就能够看到上传的文件了。

ftp文件下载

相对于文件上传来讲,使用php来进行ftp文件下载的实在是不多见,但既然有这个功能,就说明总可能会有人使用,所以也做一个简单的示例。

就以上面上传的bbb.mp3文件为下载目标来进行操作,把它下载到当前目录,命名为1.mp3:

<?php
$host = '10.0.0.42';
$uname = 'uftp';
$upwd = 'uftp';

// 进行ftp连接
if(empty($port)){
  $f_conn = ftp_connect($host);
}else{
  $f_conn = ftp_connect($host, $port);
}
if(!$f_conn){
  echo "ftp connect fail\n";
  exit(1);
}
// 进行ftp登录
if(!ftp_login($f_conn, $uname, $upwd)){
  echo "ftp login fail\n";
  exit(1);
}
// 进行ftp下载
if(!ftp_get($f_conn, './1.mp3', ftp_pwd($f_conn).'/'.date('Ymd').'/bbb.mp3', FTP_BINARY)){
  echo "ftp download fail\n";
  exit(1);
}else{
  echo "ftp download success\n";
  exit(0);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
php 魔术函数使用说明
Feb 21 PHP
php自动加载的两种实现方法
Jun 21 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP+ajax实现获取新闻数据简单示例
May 08 PHP
YII2框架中excel表格导出的方法详解
Jul 21 #PHP
实例讲解YII2中多表关联的使用方法
Jul 21 #PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 #PHP
php实现基于pdo的事务处理方法示例
Jul 21 #PHP
php基于自定义函数记录log日志方法
Jul 21 #PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 #PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 #PHP
You might like
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
页面乱码问题的根源及其分析
2013/08/09 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
php获取错误信息的方法
2015/07/17 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python实现建立SSH连接的方法
2015/06/03 Python
Python中文字符串截取问题
2015/06/15 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
没编程基础可以学python吗
2020/06/17 Python
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
新党章的学习心得体会
2014/11/07 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers