最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询

    /**
* 将文件上传到服务器
*
* @param filePath
* 文件路径
* @param channelSftp
* channelSftp对象
* @return
*/
public static boolean uploadFile(String filePath, ChannelSftp channelSftp) {
OutputStream outstream = null;
InputStream instream = null;
boolean successFlag = false;
try {
File isfile = new File(filePath); if (isfile.isFile()) {
outstream = channelSftp.put(isfile.getName());
File file = new File(filePath);
if (file.exists()) {
instream = new FileInputStream(file);
byte b[] = new byte[1024];
int n;
while ((n = instream.read(b)) != -1) {
outstream.write(b, 0, n);
}
outstream.flush();
}
successFlag = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (instream != null) {
instream.close();
}
if (outstream != null) {
outstream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
} return successFlag;
} private static Session initJschSession()
throws JSchException { int ftpPort = 0;
String ftpHost = "";
String port = "00"; //sftp的端口号
String ftpUserName = ""; //用户名
String ftpPassword = ""; //链接的密码
String privateKey = ""; //
String passphrase = "";
if (port != null && !port.equals("")) {
ftpPort = Integer.valueOf(port);
}
JSch jsch = new JSch(); // 创建JSch对象
if (StringUtils.isNotBlank(privateKey)
&& StringUtils.isNotBlank(passphrase)) {
jsch.addIdentity(privateKey, passphrase);
} if (StringUtils.isNotBlank(privateKey)
&& StringUtils.isBlank(passphrase)) {
jsch.addIdentity(privateKey);
}
jsch.getSession(ftpUserName, ftpHost, ftpPort);
Session session = jsch.getSession(ftpUserName, ftpHost, ftpPort); // 根据用户名,主机ip,端口获取一个Session对象
if (StringUtils.isNotBlank(ftpPassword)) {
session.setPassword(ftpPassword); // 设置密码
}
return session; } /**
* 获取ChannelSftp链接
*
* @param timeout
* 超时时间
* @return 返回ChannelSftp对象
* @throws JSchException
*/
public static ChannelSftp getChannelSftp(Session session, int timeout)
throws JSchException { Channel channel = null; Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config); // 为Session对象设置properties
session.setTimeout(timeout); // 设置timeout时间
session.connect(); // 通过Session建立链接 channel = session.openChannel("sftp"); // 打开SFTP通道
channel.connect(); // 建立SFTP通道的连接
return (ChannelSftp) channel;
} /**
* 断开sftp链接
*
* @param session
* 会话
* @param channel
* 通道
*/
public static void closeConnection(Channel channel, Session session) {
try {
if (session != null) {
session.disconnect(); //关闭session链接
}
if (channel != null) {
channel.disconnect(); //断开连接
}
} catch (Exception e) {
e.printStackTrace();
}
}

这里的用户名密码都是自己设置,这里的方法进行了简单的封装,方便使用

使用SFTP上传文件到服务器的简单使用的更多相关文章

  1. sftp上传到远程服务器

    开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法: $sftp = 'ssh2.sftp://';//连接sftp $con ...

  2. WPF上传文件到服务器

    利用WebClient 上传文件到服务器 创建一个空网站,创建一个UploadFile.aspx项, 服务器报500错误:检查文件保存路径是否存在,检查文件大小限制 protected void Pa ...

  3. Android上传文件至服务器(上)

    每一次都不能上首页,真悲催..管理员让我上一次首页? 很多时候我更愿意一个人写代码,与其在垃圾代码上改改改,我更愿意直接重构. 整洁的代码简单直接.整洁的代码如同优美的散文.整洁的代码从不隐藏设计者的 ...

  4. android上传文件到服务器

    package com.spring.sky.image.upload.network; import java.io.DataOutputStream; import java.io.File; i ...

  5. SFTP 上传文件夹

    使用sftp上传文件夹时若使用如下命令并不work: put /media/Research/GWAS_Class/* Desktop/ 此时,需要添加一个参数 -r, 另外在目标文件夹下面建立一个同 ...

  6. Android端通过HttpURLConnection上传文件到服务器

    Android端通过HttpURLConnection上传文件到服务器 一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HT ...

  7. joomla安装插件报错:上传文件到服务器发生了一个错误。 过小的PHP文件上传尺寸

    在安装joomla的AKeeba插件的时候报错如下:上传文件到服务器发生了一个错误. 过小的PHP文件上传尺寸.解决方法是修改php.ini文件,打开文件后搜索upload_max_filesize! ...

  8. android -上传文件到服务器

    android上传文件到服务器       重点:最好是设置好content-type这些参数的配置!     package com.spring.sky.image.upload.network; ...

  9. 用winscp从本地上传文件到服务器上出现复制文件到远端时错误。

    用winscp从本地上传文件到服务器上出现复制文件到远端时错误. 错误码:4 服务器返回的错误消息:write failed 报错如下图所示: 分析过程: 1.刚开始以为是权限不够,后面上网查了一下是 ...

随机推荐

  1. POJ1014Dividing(DP)

    http://poj.org/problem?id=1014 最简单之多重背包 #include <map> #include <set> #include <stack ...

  2. IL学习资料

    读懂IL代码就这么简单 由浅入深CIL系列 .net IL 指令速查

  3. 如何在我们项目中利用开源的图表(js chart)

            最近觉得应该把自己在技术上的一些心得记录在博客里面跟大家分享,一起讨论,一起成长!       这篇随笔主要为介绍chart在项目中的运用,因为在我们看到一些开源的chart时候,是使 ...

  4. MySQL 日期时间

    NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中.CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DAT ...

  5. 用Java实现菱形的打印输出

    import java.util.Scanner; public class dengyao2 { public dengyao2() { super(); } public static void ...

  6. C++组合问题

    求一个组合,如C(16,3),我们可以通过公式求出这有多少个数,但怎么把这些数表示出来呢? 代码: #include<iostream> #include<stdio.h> # ...

  7. EasyUI-Tab 标签添加右键菜单

    在网上看了很多demo 自己实现了一个效果如下 <!doctype html> <html> <head> <meta http-equiv="co ...

  8. vs2013 设置为中文版

  9. data URI scheme

    优化网页效能,首要的任务是尽量减少HTTP请求(http request)的次数,例如把多个JavaScript文档合并,多个CSS文件合并等等.此外,还有有一种 data URL 的方法,可以直接把 ...

  10. MySQL · 引擎特性 · InnoDB 事务锁简介

    https://yq.aliyun.com/articles/4270# zhaiwx_yinfeng 2016-02-02 19:00:43 浏览2194 评论0 mysql innodb lock ...