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 相关文章推荐
PHP中显示格式化的用户输入
Oct 09 PHP
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
php使用文本统计访问量的方法
May 12 PHP
PHP区块查询实现方法分析
May 12 PHP
浅谈php的TS和NTS的区别
Mar 13 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
php 解析非标准json、非规范json
Apr 01 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
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
优化Jquery,提升网页加载速度
2013/11/14 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
python每隔N秒运行指定函数的方法
2015/03/16 Python
python对html代码进行escape编码的方法
2015/05/04 Python
python中 logging的使用详解
2017/10/25 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
毕业班工作总结
2015/08/10 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书