扩展安装

要想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服务器的更多相关文章

  1. WebClient 上传文件 上传文件到服务器端

    一直对于上传文件到服务器端困惑:以前,现在,学到了关于WebClient的post知识 瞬间对于上传文件到服务器觉得好轻松: 原理很简单:我们通过post服务器的页面:把本地的文件直接传递过去: 现在 ...

  2. OkHttp上传文件,服务器端请求解析找不到文件信息的问题

    长话短说,不深入解释了,官方给的上传案例代码: private static final String IMGUR_CLIENT_ID = "..."; private stati ...

  3. kbmmw 的HTTPSmartService 上传文件到服务器端

    前面我写过了 HTTPSmartService 使用介绍,可以参见以前的文章. 前一向有同学问如何在http 页面表单上上传文件.一直没有时间回答,自己简单做了例子, 发现无法实现功能,今天花了一天时 ...

  4. 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息

    多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...

  5. 客户端(Winform窗体)上传文件到服务器(web窗体)简单例子

    客户端:先创建一个winform窗体的应用程序项目 项目结构

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. 上传文件及$_FILES的用法实例

    Session变量($_SESSION):�php的SESSION函数产生的数据,都以超全局变量的方式,存放在$_SESSION变量中.1.Session简介SESSION也称为会话期,其是存储在服务 ...

  8. SpringMVC+jquery.uploadify 上传文件

    前言 以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo. 刚开始用form表单的方式提交,在C ...

  9. php 应用 bootstrap-fileinput 上传文件 插件 操作的方法

    //先加载插件所需要的 js .css 文件 <link href="css/fileinput.css" rel="stylesheet" type=& ...

随机推荐

  1. SQLite 入门教程(三)好多约束 Constraints(转)

    转于: SQLite 入门教程(三)好多约束 Constraints 一.约束 Constraints 在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应 ...

  2. C#基础知识-对象初始化顺序

    本文章转载:http://blog.csdn.net/forever_wind/article/details/7442503 不错的文章:http://www.cnblogs.com/McJerem ...

  3. 安装J2EE的SDK报错:could not find the required version of the Java(TM)2 Runtime Environment in '(null)'的解决办法。

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. hdu 3183 A Magic Lamp(RMQ)

    题目链接:hdu 3183 A Magic Lamp 题目大意:给定一个字符串,然后最多删除K个.使得剩下的组成的数值最小. 解题思路:问题等价与取N-M个数.每次取的时候保证后面能取的个数足够,而且 ...

  5. 实战RPM包制作

    在开发中经常会用到一些rpm包,但是一直没有自己手动制作过.今天在制作的时候意外地还解决了自己以前一直困惑的问题,就是怎么制作rpm debuginfo包,类似CentOS官网那样的debuginfo ...

  6. 15 Linux Split and Join Command Examples to Manage Large Files--reference

    by HIMANSHU ARORA on OCTOBER 16, 2012 http://www.thegeekstuff.com/2012/10/15-linux-split-and-join-co ...

  7. css :after和:before

    :before是css中的一种伪元素,可用于在某个元素之前插入某些内容.:after是css中的一种伪元素,可用于在某个元素之后插入某些内容. 举例: 1.结合border写个对话框的样式. < ...

  8. Android Activiy的作用

    在Android应用程序中 ,Activity主要的负责创建窗口的,一个Activicy就是代表一个单独的屏幕,并且是用户唯一可以看到的东西 也就是说Activity就是用来实现和用户交互的,就和.n ...

  9. html5标签兼容ie6,7,8

    注册博客园已经三年了,这三年一直在忙,没时间写博文.也许是忙,也许是懒吧!当然这三年发生了很多事,我也从开发人员转变为前端人员. 是时候对所学的,所用的知识做一下沉淀了.就从这一篇开始吧! html5 ...

  10. eclipse 注释模板设置

    方法注释模板 /** * @title ${enclosing_method} * @description ${todo} * ${tags} ${return_type} * @Date ${da ...