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中的实现trim函数代码
Mar 19 PHP
自定义php类(查找/修改)xml文档
Mar 26 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
php实现文件上传基本验证
Mar 04 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 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根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
three.js快速入门【推荐】
2017/01/21 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
python 切片和range()用法说明
2013/03/24 Python
Python isinstance函数介绍
2015/04/14 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
对python中Json与object转化的方法详解
2018/12/31 Python
【python】matplotlib动态显示详解
2019/04/11 Python
pycharm 安装JPype的教程
2019/08/08 Python
python实现简单学生信息管理系统
2020/04/09 Python
德国网上药房:Apotal
2017/04/04 全球购物
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
生物专业个人自荐信范文
2013/11/29 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
内勤岗位职责范本
2015/04/13 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
Tomcat用户管理的优化配置详解
2022/03/31 Servers