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基础知识:控制结构
Dec 13 PHP
收藏的一个php小偷的核心程序
Apr 09 PHP
关于php mvc开发模式的感想
Jun 28 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
重新认识php array_merge函数
Aug 31 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
PHP面向对象程序设计实例分析
Jan 26 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
关于PHP求解三数之和问题详析
Nov 09 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新手上路(十四)
2006/10/09 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
javascript中expression的用法整理
2014/05/13 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Python过滤列表用法实例分析
2016/04/29 Python
python学习入门细节知识点
2018/03/29 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
业务经理岗位职责
2013/11/11 职场文书
业务助理岗位职责
2013/11/18 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
吨的认识教学反思
2014/04/27 职场文书
植树节活动总结
2014/04/30 职场文书
提拔干部考察材料
2014/05/26 职场文书
超市客服工作职责
2014/06/11 职场文书
食品安全承诺书范文
2014/08/29 职场文书
支行行长竞聘报告
2014/11/06 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
表扬信范文
2015/05/04 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL