700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > sftp上传文件服务器 使用SFTP上传文件到服务器的简单使用

sftp上传文件服务器 使用SFTP上传文件到服务器的简单使用

时间:2019-03-23 08:59:48

相关推荐

sftp上传文件服务器 使用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 = 'ssh2.sftp://';//连接sftp $con ...

WPF上传文件到服务器

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

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

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

android上传文件到服务器

packagecom.spring.sky.work; importjava.io.DataOutputStream; importjava.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这些参数的配置! packagecom.spring.sky.work; ...

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

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

随机推荐

Android Studio快捷键

一.android studio 默认快捷键 刚开始接触一款开发软件,想必很想了解它的快捷方式,这会对你的编程起到很好的帮助,提高工作效率,接下来给你介绍下Android Studio一些常用的快 ...

mybatis 中的where标签

mybatis中的where标签可以去除 开头的 and 或者 or但是放在后面的不行 失败的:

SSH-Hibernate+Struts2+Spring的股票项目整合

创建项目之前:我们需要导入我们需要的Hibernate和Struts2和Spring的相关架包.(博客自创,如有问题请留言博主,拒绝盗版,支持正版/WuXu ...

使用Emmet(前身Zen Coding)加速Web前端开发

Emmet插件以前被称作为Zen Coding,是一个文本编辑器的插件,它可以帮助您快速编写HTML和CSS代码,从而加速Web前端开发.早在,Sergey Chikuyonok写过一篇文章 ...

java jdbc 连接mysql 数据库

JDBC连接MySQL 加载及注册JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); Class.forName("com. ...

Hadoop(六)之HDFS的存储原理(运行原理)

前言 其实说到HDFS的存储原理,无非就是读操作和写操作,那接下来我们详细的看一下HDFS是怎么实现读写操作的! 一.HDFS读取过程 1)客户端通过调用FileSystem对象的open()来读取希 ...

[la P5031&hdu P3726] Graph and Queries

[la P5031&hdu P3726] Graph and Queries Time Limit: 10000/5000 MS (Java/Others)Memory Limit: ...

查看mysql的版本号

查看mysql的版本号 1.1 在命令行登录mysql,即可看到mysql的版本号 [root@heyong ~]# mysql -uroot -p Enter password: Welcome t ...

MySQL Transaction--MySQL与SQL Server在可重复读事务隔离级别上的差异

MySQL和SQL Server两种数据库在REPEATABLE-READ事务隔离级别实现方式不同,导致使用上也存在差异. 在MySQL中,默认使用REPEATABLE-READ事务隔离级别,MySQ ...

5239 《网络对抗》Exp4 恶意代码分析

5239 Exp4 恶意代码分析 使用schtasks指令监控系统运行 先在C盘目录下建立一个netstatlog.bat文件,用来将记录的联网结果格式化输出到nets ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。