首页 > Web开发 > 详细

关于sftp 上传

时间:2017-01-10 10:33:09      阅读:361      评论:0      收藏:0      [点我收藏+]

使用sftp技术上传到远程服务器,必须参数有服务器ip、用户名、密码、上传文件的路径及文件,代码如下,经测试,可直接复制粘贴使用,使用时需导入jar包JSch.jar


public static void sshSftp(String ip, String user, String psw ,int port,String filePath,     String fileName,String localFilePathName) throws Exception{

Session session = null;

Channel channel = null;

JSch jsch = new JSch();

if(port <=0){

//连接服务器,采用默认端口

session = jsch.getSession(user, ip);

}else{

//采用指定的端口连接服务器

session = jsch.getSession(user, ip ,port);

}


//如果服务器连接不上,则抛出异常

if (session == null) {

throw new Exception("session is null");

}

//设置登陆主机的密码

session.setPassword(psw);//设置密码   

//设置第一次登陆的时候提示,可选值:(ask | yes | no)

session.setConfig("StrictHostKeyChecking", "no");

//设置登陆超时时间   

session.connect(30000);

try {

//创建sftp通信通道

channel = (Channel) session.openChannel("sftp");

channel.connect(1000);

ChannelSftp sftp = (ChannelSftp) channel;

//进入服务器指定的文件夹

//sftp.cd("domains");

//sftp.mkdir("test");

//sftp.cd("test");

String directory = "zz/user/we";

try{

   sftp.cd(directory);

}catch(SftpException sException){

   if(sftp.SSH_FX_NO_SUCH_FILE == sException.id){

   sftp.mkdir(directory);

       sftp.cd(directory);

   }

}

String[] folders = filePath.split( "/" );  

for ( String folder : folders ) {  

   if ( folder.length() > 0 ) {  

       try {  

           sftp.cd(folder);  

       }  

       catch ( SftpException e ) {  

           sftp.mkdir(folder);  

           sftp.cd(folder);  

       }  

   }  

}  

//列出服务器指定的文件列表

Vector v = sftp.ls("*.txt");

for(int i=0;i<v.size();i++){

System.out.println(v.get(i));

}

//以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换以下流就可以了

// 远程目标文件

OutputStream outstream = sftp.put(fileName);

// 本地文件

InputStream instream = new FileInputStream(new File(localFilePathName));

byte b[] = new byte[1024];

int n;

   while ((n = instream.read(b)) != -1) {

    outstream.write(b, 0, n);

   }

   

   outstream.flush();

   outstream.close();

   instream.close();

} catch (Exception e) {

e.printStackTrace();

} finally {

session.disconnect();

channel.disconnect();

}

}

      public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

String ip ="192.168.0.138";

String user = "huixiang";

String pwd = "huixiang";

int port = 22;

String filePaht="zhxin/test/dier";

String fileName="myTest.txt";

new sftp().sshSftp(ip, user, pwd, port,filePaht,fileName);


本文出自 “画江湖” 博客,谢绝转载!

关于sftp 上传

原文:http://751756016.blog.51cto.com/6308835/1890495

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!