使用SFTP上传文件到服务器的简单使用
最近用到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上传文件到服务器的简单使用的更多相关文章
- sftp上传到远程服务器
开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法: $sftp = 'ssh2.sftp://';//连接sftp $con ...
- WPF上传文件到服务器
利用WebClient 上传文件到服务器 创建一个空网站,创建一个UploadFile.aspx项, 服务器报500错误:检查文件保存路径是否存在,检查文件大小限制 protected void Pa ...
- Android上传文件至服务器(上)
每一次都不能上首页,真悲催..管理员让我上一次首页? 很多时候我更愿意一个人写代码,与其在垃圾代码上改改改,我更愿意直接重构. 整洁的代码简单直接.整洁的代码如同优美的散文.整洁的代码从不隐藏设计者的 ...
- android上传文件到服务器
package com.spring.sky.image.upload.network; import java.io.DataOutputStream; import java.io.File; i ...
- SFTP 上传文件夹
使用sftp上传文件夹时若使用如下命令并不work: put /media/Research/GWAS_Class/* Desktop/ 此时,需要添加一个参数 -r, 另外在目标文件夹下面建立一个同 ...
- Android端通过HttpURLConnection上传文件到服务器
Android端通过HttpURLConnection上传文件到服务器 一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HT ...
- joomla安装插件报错:上传文件到服务器发生了一个错误。 过小的PHP文件上传尺寸
在安装joomla的AKeeba插件的时候报错如下:上传文件到服务器发生了一个错误. 过小的PHP文件上传尺寸.解决方法是修改php.ini文件,打开文件后搜索upload_max_filesize! ...
- android -上传文件到服务器
android上传文件到服务器 重点:最好是设置好content-type这些参数的配置! package com.spring.sky.image.upload.network; ...
- 用winscp从本地上传文件到服务器上出现复制文件到远端时错误。
用winscp从本地上传文件到服务器上出现复制文件到远端时错误. 错误码:4 服务器返回的错误消息:write failed 报错如下图所示: 分析过程: 1.刚开始以为是权限不够,后面上网查了一下是 ...
随机推荐
- CCF 201403-3 命令行选项 (STL模拟)
问题描述 请你写一个命令行分析程序,用以分析给定的命 令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序 ...
- 完成端口(CompletionPort)详解
手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ...
- M站 滚动日历弹框
先放张效果图: 完整Demo: <!DOCTYPE html> <html lang="en"> <head> <meta http-eq ...
- Centos下忘记mysql的root密码的解决方法
Centos下忘记mysql的root密码的解决方法 一:(停掉正在运行的mysql) [root@NetDakVPS ~]# service mysql stop 二:使用 “--skip-gran ...
- 今天做php经典实例,发现,我是对的,面试官给我说错了
那是七月中下旬在乐元素公司面试,问了我问什么 $str = "Hellow {$res} world";这么写,我回答说 在字符串中插入复杂变量可以用花括号干起来把? 他告诉我 应 ...
- Swift学习笔记九
闭包 闭包是指能够在代码中使用和传递的自包含(self-contained)的块. Swift中的闭包和C以及OC中的块很相似.它们可以捕获并且存储定义它们的上下文中的任何常量和变量的引用.Swift ...
- IIS 7.0 and Web Farms
1. IIS 6 IIS 6.0 was capable of scaling out to virtually any number of web servers and had tools lik ...
- 2016 icpc-camp 之旅(一)
啦啦啦,终于前往icpccamp啦! 嗯,该死的飞机居然晚点了! 诶,晚点居然还会发赔偿金! 飞机上没什么好说的,和萌神一起看了5集龙与虎,然后就到了. 讲道理,海南航空感觉一般. 我的座位前面有个平 ...
- 菜鸟从零学编程(八)——将MyEclipse项目导入到Eclipse
最近由于种种原因,需要将以前用MyEclipse写的项目迁移到Eclipse中.但是当我将之前的项目import到Eclipse中后,发现根本不能运行.经过一番寻觅,终于让我找到了一种解决的办法.一起 ...
- HtmlAgilityPack.dll的使用 获取HTMLid
简介 本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用,用途比较多的应该是例如采集类的功能,采集到的html字符串要怎样处理是一个头痛的问题,如果是截取就太麻 ...