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查询域名状态whois的类
Nov 25 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
php debug 安装技巧
Apr 30 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
深入解析php之apc
May 15 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
yii用户注册表单验证实例
Dec 26 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
PHP递归统计系统中代码行数
Sep 19 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 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模板类代码
2008/09/07 PHP
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
网上应用的一个不错common.js脚本
2007/08/08 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
2017/04/13 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
让python json encode datetime类型
2010/12/28 Python
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
浅谈Python中的bs4基础
2018/10/21 Python
python3 爬取图片的实例代码
2018/11/06 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
如何做好工作总结!
2019/04/10 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript