上传文件到服务器端后进一步推送到sftp服务器
扩展安装
要想sftp服务端发送文件,就需要php脚本具有作为ssh客户端的能力,所以需先为php安装如下扩展
- openssl
- openssl-dev
- libssh
- php ssh 扩展
按照下面的命令进行安装
- rpm -qa | grep openssl
- wget http://www.libssh2.org/download/libssh2-1.6.0.tar.gz
- tar zxvf llibssh2-1.6..tar.gz
- cd libssh2-1.6.
- ./configure
- make && make install
- wget http://pecl.php.net/get/ssh2-0.11.3.tgz
- tar xvf ssh2-0.11..tgz
- cd ssh2-0.11.
- phpize
- ./configure --with-ssh2
- make
- cp modules/ssh2.so /alidata/server/php-5.4./lib/php/extensions/no-debug-non-zts-
- echo 'extension=ssh2.so' >> /alidata/server/php-5.4./etc/php.ini
- service nginx restart
- php -i | grep ssh2
服务器软件安装路径需要根据实际情况修改
php推送脚本
注意这里服务端已经处理完文件上传,这个推送的部分可以另起一个线程或进程去推送
- public function proccessFile($destinationPath, $filename)
- {
- //parent::proccessFile($destinationPath, $filename); // TODO: Change the autogenerated stub
- $remoteBasePath = '/mnt/java/pipeline/ads/upload/';
- $localBasePath = '/alidata/www/aft/';
- $connection = ssh2_connect('XXX.XXX.XXX.XXX', 22);
- ssh2_auth_password($connection, 'username', 'password');
- /*
- $sftp = ssh2_sftp($connection);
- SiteHelpers::PE($sftp);
- $resFile = fopen("ssh2.sftp://$sftp/mnt/java/pipeline/ads/upload", 'w');
- $srcFile = fopen('/alidata/www/aft/'.$destinationPath.'/'.$filename,'r');
- $writtenBytes = stream_copy_to_stream($srcFile, $resFile);
- fclose($resFile);
- fclose($srcFile);
- */
- $dateDir = date("Y-m/d",strtotime("-1 day"));
- // SiteHelpers::PE($remoteBasePath.$dateDir.'/'.$filename);
- // $sftp = ssh2_sftp($connection);
- // ssh2_sftp_mkdir($sftp,$remoteBasePath.$dateDir);
- ssh2_exec($connection,'mkdir -p '.$remoteBasePath.$dateDir);
- ssh2_scp_send($connection,
- $localBasePath.$destinationPath.'/'.$filename,
- $remoteBasePath.$dateDir.'/'.$filename);
- Log::info('处理了投放数据');
- Log::info($destinationPath.'/'.$filename);
- }
可以看到最后文件成功推送到sftp服务器
上传文件到服务器端后进一步推送到sftp服务器的更多相关文章
- WebClient 上传文件 上传文件到服务器端
一直对于上传文件到服务器端困惑:以前,现在,学到了关于WebClient的post知识 瞬间对于上传文件到服务器觉得好轻松: 原理很简单:我们通过post服务器的页面:把本地的文件直接传递过去: 现在 ...
- OkHttp上传文件,服务器端请求解析找不到文件信息的问题
长话短说,不深入解释了,官方给的上传案例代码: private static final String IMGUR_CLIENT_ID = "..."; private stati ...
- kbmmw 的HTTPSmartService 上传文件到服务器端
前面我写过了 HTTPSmartService 使用介绍,可以参见以前的文章. 前一向有同学问如何在http 页面表单上上传文件.一直没有时间回答,自己简单做了例子, 发现无法实现功能,今天花了一天时 ...
- 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息
多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...
- 客户端(Winform窗体)上传文件到服务器(web窗体)简单例子
客户端:先创建一个winform窗体的应用程序项目 项目结构
- 通过cmd完成FTP上传文件操作
一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...
- 上传文件及$_FILES的用法实例
Session变量($_SESSION):�php的SESSION函数产生的数据,都以超全局变量的方式,存放在$_SESSION变量中.1.Session简介SESSION也称为会话期,其是存储在服务 ...
- SpringMVC+jquery.uploadify 上传文件
前言 以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo. 刚开始用form表单的方式提交,在C ...
- php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
//先加载插件所需要的 js .css 文件 <link href="css/fileinput.css" rel="stylesheet" type=& ...
随机推荐
- 清理Win8.1更新冗余的批处理代码
以下为批处理文件内容,复制到文本文件,另存为.bat文件,以管理员方式运行即可. @echo off title 清理Win8.1更新冗余 color 2e echo 提示:本程序可能需要以管理员方式 ...
- hdu2157之矩阵快速幂
How many ways?? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Unityclient通信測试问题处理(二)
Unityclient通信測试问题处理(二) 在client的通信測试过程中.场景载入的问题给自己带来了不小的麻烦.由于消息的解析方法在单独的监听线程中调用,这也就意味着无法在消息的解析方法中调用Un ...
- netbeans下将全部jar包打成一个,俗称fat jar
netbeans的java项目中.默认会将配置好的外部引用jar包,复制到dist文件夹的lib文件夹中去.假设须要公布出去.就须要将dist文件夹生成的jar和lib文件夹都拷贝出去公布,不方便. ...
- mongodb的地理位置索引
mongoDB支持二维空间索引,使用空间索引,mongoDB支持一种特殊查询,如某地图网站上可以查找离你最近的咖啡厅,银行等信息.这个使用mongoDB的空间索引结合特殊的查询方法很容易实现.前提条件 ...
- 从本地上传整个目录到hdfs的java程序
首先在网上找了好久没有找到从本地文件系统上传整个目录到hdfs文件系统的程序,权威指南上也没有,都是单个文件上传,所以这里自己编写了一个程序,封装成jar包执行能够复制. 先说明一下代码:须要手动输入 ...
- phpcms 源码分析五:文件缓存实现
这次是逆雪寒的文件缓存实现代码分析: /* [/php] PHPCMS的文本缓存实现: [php] <?php /* 这个文件里面全是有关生成文本缓存的函数.文本缓存是个好东西.一般的项目,我们 ...
- 使用AOP 实现Redis缓存注解,支持SPEL
公司项目对Redis使用比较多,因为之前没有做AOP,所以缓存逻辑和业务逻辑交织在一起,维护比较艰难所以最近实现了针对于Redis的@Cacheable,把缓存的对象依照类别分别存放到redis的Ha ...
- js基础1
一.JavaScript 不同于Java 有三部分组成 核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM) 二.var 是定义数据前加的前缀 三.弹出 alert( ) ...
- sqlserver2008中如何用右键可视化的设置外键
右键->设计 然后打表设计界面打开了然后右键点你要设置与其它表关联的列然后点关系,选择外键表与列然后点保存,就这样