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应用程序来获取Web服务器的状态信息
Oct 09 PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
PHP合并静态文件详解
Nov 14 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
Laravel5权限管理方法详解
Jul 26 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
浅谈php和js中json的编码和解码
Oct 24 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 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
COM in PHP (winows only)
2006/10/09 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python字符串中查找子串小技巧
2015/04/10 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
Python hashlib模块用法实例分析
2018/06/12 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Pytorch转tflite方式
2020/05/25 Python
办公室助理岗位职责
2013/12/25 职场文书
开办化妆品公司创业计划书
2013/12/26 职场文书
安全生产先进个人材料
2014/02/06 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
年终考核实施方案
2014/05/26 职场文书
销售人才自我评价范文
2014/09/27 职场文书
500字小学生检讨书
2015/02/19 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis