个人博客地址https://xgs888.top/post/view?id=57

PHP的sftp文件上传;在框架thinkphp5中使用;

主要用到的sftp函数如下;

ssh2_connect(host,port) 链接信息

ssh2_auth_password($con,username,password)登录验证

copy();//服务器之间的文件复制;

要求如下

需要的文件字段信息见附件内容,注意最后一列带年月日时分秒格式;

上传前,需要先判断相应目录下是否有上一天日期文件夹,若无,则创建,若有,则直接上传至相应文件夹下,如附件所示

thinkphp5中提供了一个非composer安装的第三方类库目录extend

在extend目录下创建一个sftp目录创建sftp.php的类

namespace sftp;
class Sftp
{// 初始配置为NULLprivate $config = NULL;// 连接为NULLprivate $conn = NULL;//sftp resource private $ressftp = 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'])){$this->ressftp = ssh2_sftp($this->conn);}else{ echo "用户名或密码错误";}}// 下载文件public function downftp($remote, $local){ return copy("ssh2.sftp://{$ressftp}".$remote, $local);}// 文件上传public function upftp( $local,$remote, $file_mode = 0777){ return copy($local,"ssh2.sftp://{$this->ressftp}".$remote); }//创建目录public function ssh2_sftp_mchkdir($path)  //使用创建目录循环{ssh2_sftp_mkdir($this->ressftp, $path,0777);}//判段目录是否存在public function ssh2_dir_exits($dir){return file_exists("ssh2.sftp://{$this->ressftp}".$dir);}}

下面在控制器里面调用

namespace app\index\controller;use think\Controller;
use \sftp\sftp;
class Index extends Controller
{public function index(){ini_set('max_execution_time','0');//设置永不超时$time = date('ymd',time()-24*3600);//上一天的日期$name = "mac".$time;$data = db('table')->where("add_date='2017-10-09'")->select();//查询数据$fp = fopen("$name.csv","a"); //打开csv文件,如果不存在则创建$datastr = 'id,sitecode,devmac,stamac,add_date,up_time'."\r\n";foreach ($data as $key => $value) {# code...$datastr = $datastr.$value['id'].$value['sitecode'].','.$value['devmac'].','.$value['stamac'].','.$value['add_date'].','.$value['up_time']."\r\n";}//iconv('GB2312','UTF-8//IGNORE',$datastr)fwrite($fp,$datastr); //写入数据讲gbk转成utf8fclose($fp); //关闭文件句柄echo "生成成功";$config = array('host'=>'127.0.0.1','username'=>'root','password'=>'root','port'=>'22');$sftp = new sftp($config);$re = $sftp->ssh2_dir_exits("/test/$time");if($re){//如果目录存在直接上传$sftp->upftp("$name.csv",'/test/'.$time.'/'.$name.'.csv');}else{$sftp->ssh2_sftp_mchkdir('/test/'.$time);$sftp->upftp("$name.csv",'/test/'.$time.'/'.$name.'.csv');}}}

转载于:https://blog.51cto.com/11760810/2044534

PHP-sftp文件上传相关推荐

  1. SFTP文件上传、下载

    SFTP文件上传.下载 public class SftpUtil {private String downFilePath = ""; // FTP文件下载路径private S ...

  2. php sftp文件上传 文件上传

    <?php /*** sftp文件上传*//*** Sftp 操作類* Class Sftp*/ class Sftp {/*** 連接對象* @var false|resource*/priv ...

  3. SFTP文件上传与下载

    一.引入jar包 <dependency><groupId>com.github.mwiede</groupId><artifactId>jsch< ...

  4. java jsch实现sftp文件上传,并且控制上传的速度,同时监控上传进度

    工作中,有些环境带宽有限,比如说专线,通常带宽比较小,又不便宜,当业务量大的时间,如果在专线上还要传输文件的话,往往在文件传输的时间会导致带宽占慢,就有可能导致时实交易进不来,有可能影响交易,今天贴一 ...

  5. Python + Paramiko实现sftp文件上传下载

    最近在测试服务器那块,看了下Paramiko模块,一直都是用FileZilla工具,想了想,持续集成,更新代码可以用Parmmiko完成,还是不错的 Paramiko是用python语言写的一个模块, ...

  6. sftp文件上传和下载

    sftp工具类 /** * ClassName: SFTPUtil.java * @date 2019年8月31日 */ package com.qytb.utils;import com.jcraf ...

  7. sftp文件上传下载改名压缩解压

    希望能帮到大家,有疑问联系 package com.qb.modules.organtrans.interactive.jinshang;import java.io.File; import jav ...

  8. 【centos7 Sftp 文件上传 安装手册】

    Linux centos7 Sftp 安装手册 Sftp 安装 基本介绍 sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的网络 ...

  9. php实现sftp上传文件,PHP-sftp文件上传

    PHP的sftp文件上传:在框架thinkphp5中使用: 主要用到的sftp函数如下: ssh2_connect(host,port) 链接信息 ssh2_auth_password($con,us ...

最新文章

  1. Hacker(六)----黑客藏匿之地--系统进程
  2. 活在未来,需要知道了解过去
  3. linux中yum怎么安装服务器,yum安装(linux如何安装yum)
  4. 操作系统:进程间通信与线程间同步
  5. python 打包发布网站_Python代码的打包与发布
  6. SAP Spartacus使用cxComponentWrapper测试MiniCart
  7. 方正计算机软件保护进超级用户,超级用户权限补丁(SuperSU Pro)含刷机包
  8. linux mysql 备份脚本_linux下mysql备份脚本
  9. VS2013搭建wxWidgets开发环境
  10. C语言课程设计|学生成绩管理系统(含完整代码)
  11. jQuery的图片放大器插件 jQzoom
  12. 需要TrustedInstaller权限才可以删除解决办法
  13. 计算机网络拓扑图的描述,计算机网络拓扑结构 以下关于星型网络拓扑结构的描述正确的是______。 (多选题 )...
  14. Android 进阶——Framework 核心ANR( Applicatipon No Response)机制设计思想详解
  15. 什么是特征工程?如何进行特征工程?超详细解读
  16. [转]Android开源项目收藏分享
  17. 腹外斜肌(03):负重体旋转
  18. 关于数据库的表如何删除空行
  19. 数说亚洲杯小组赛:冷门四宗“最”知多少?
  20. Java、JSP电子健康档案管理系统

热门文章

  1. UA MATH524 复变函数2 指数、对数与三角函数
  2. UA MATH567 高维统计IV Lipschitz组合4 对称群上的均匀分布
  3. UA MATH574M 统计学习 Variable Selection:Cross Validation
  4. 超图 iServer服务体系学习
  5. elementUI树状图竖向滚动条和横向滚动条问题
  6. CSAPP lab2 二进制拆弹 binary bombs phase_6
  7. [转帖]Runtime, Engine, VM 的区别是什么?
  8. node实现爬取当前页面链接实现
  9. 数据结构1_java---单链表的操作,约瑟夫问题
  10. npm命令的--save 与--save-dev