PHP SFTP实现上传下载功能


Posted in PHP onJuly 26, 2017

 一、SFTP介绍:

使用SSH协议进行FTP传输的协议叫SFTP(安全文件传输)Sftp和Ftp都是文件传输协议。区别:sftp是ssh内含的协议(ssh是加密的telnet协议), 只要sshd服务器启动了,它就可用,而且sftp安全性较高,它本身不需要ftp服务器启动。 sftp = ssh + ftp(安全文件传输协议)。由于ftp是明文传输的, 没有安全性,而sftp基于ssh,传输内容是加密过的,较为安全。目前网络不太安全,以前用telnet的都改用ssh2(SSH1已被破解)。

sftp这个工具和ftp用法一样。但是它的传输文件是通过ssl加密了的,即使被截获了也无法破解。而且sftp相比ftp功能要多一些,多了一些文件属性的设置。 

二、SSH2扩展配置

1.  下载地址:http://windows.php.net/downloads/pecl/releases/ssh2/0.12/

根据自己的php版本选择 扩展包,这里我使用的是php5.3,所以我下载的是 php_ssh2-0.12-5.3-ts-vc9-x86.zip(下载链接)

PHP SFTP实现上传下载功能

2. 解压完后,会有三个文件,libssh2.dll、php_ssh.dll、php_ssh2.pdb。 

3. 将 php_ssh.dll、php_ssh2.pdb 放到你的 php 扩展目录下 php/ext/ 下。 

4. 将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份 

5.在 php.ini中加入 extension=php_ssh2.dll

6.重启Apache, 打印phpinfo(); 会出现 SSH2 扩展,表示安装成功

PHP SFTP实现上传下载功能

三、SFTP 代码DEMO

调用代码

$config = array(
  'host' =>'211.*.*.*', //服务器
  'port' => '23', //端口
  'username' =>'test', //用户名
  'password' =>'*****', //密码
 );
 $ftp = new Sftp($config);
 $localpath="E:/www/new_20170724.csv";
 $serverpath='/new_20170724.csv';
 $st = $ftp->upftp($localpath,$serverpath); //上传指定文件
 if($st == true){
  echo "success";
  
 }else{
  echo "fail";
 }

SFTP 封装类

<?php
/**
 * SFtp上传下载文件
 *
 */
namespace Common\ORG\Util;

class Sftp
{
 
 // 初始配置为NULL
 private $config = NULL;
 // 连接为NULL
 private $conn = NULL;
 // 初始化
 public function __construct($config)
 {
 $this->config = $config;
 $this->connect();
 }
 

 public function connect()
 {
 
 $this->conn = ssh2_connect($this->config['host'], $this->config['port']);
 if( ssh2_auth_password($this->conn, $this->config['username'], $this->config['password']))
 {
  
 }else{ 
  echo "无法在服务器进行身份验证";
 }
 
 }
 
 // 传输数据 传输层协议,获得数据
 public function downftp($remote, $local)
 { 
 $ressftp = ssh2_sftp($this->conn);
 return copy("ssh2.sftp://{$ressftp}".$remote, $local);
 }
 
 // 传输数据 传输层协议,写入ftp服务器数据
 public function upftp( $local,$remote, $file_mode = 0777)
 { 
 $ressftp = ssh2_sftp($this->conn);
 return copy($local,"ssh2.sftp://{$ressftp}".$remote); 
 
 }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Discuz! Passport 通行证整合
Mar 27 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
PHP学习笔记之二
Jan 17 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
神盾加密解密教程(一)PHP变量可用字符
May 28 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 #PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 #PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 #PHP
php实现微信企业号支付个人的方法详解
Jul 26 #PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 #PHP
浅谈Yii乐观锁的使用及原理
Jul 25 #PHP
PHP异常处理定义与使用方法分析
Jul 25 #PHP
You might like
上海无线电三厂简史修改版
2021/03/01 无线电
php简单实现多维数组排序的方法
2016/09/30 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
vue v-model的用法解析
2020/10/19 Javascript
Python安装selenium包详细过程
2019/07/23 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
个人自我鉴定范文
2013/10/04 职场文书
前台领班岗位职责
2013/12/04 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
先进工作者申报材料
2014/12/23 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
党性修养心得体会2016
2016/01/21 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA