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删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
php析构函数的简单使用说明
Aug 24 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
解决php extension 加载顺序问题
Aug 16 PHP
PHP数组访问常用方法解析
Sep 05 PHP
PHP变量的作用范围实例讲解
Dec 22 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 调试工具Debug Tools
2011/04/30 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python正则表达式使用经典实例
2016/06/21 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
python绘制雷达图实例讲解
2021/01/03 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
市场营销专业毕业生求职信
2014/03/26 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
信访稳定工作汇报
2014/10/27 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers