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 smarty函数扩展
Mar 15 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
PHP基础学习小结
Apr 17 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
解析thinkphp中的M()与D()方法的区别
Jun 22 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
全面了解PHP中的全局变量
Jun 17 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
php生成与读取excel文件
Oct 14 PHP
PHP二维数组去重算法
Dec 17 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
php判断IP地址是否在多个IP段内
Aug 18 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 生成随机验证码图片代码
2010/02/08 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
php获取错误信息的方法
2015/07/17 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
jquery select操作的日期联动实现代码
2009/12/06 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
jQuery技巧总结
2011/01/01 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
python win32 简单操作方法
2017/05/25 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
学校安全责任书
2014/04/14 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
民间借贷被告代理词
2015/05/23 职场文书
谢师宴家长致辞
2015/07/27 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
JS实现简单九宫格抽奖
2022/06/28 Javascript