JSch - Java实现的SFTP(文件上传详解篇)

http://www.byywee.com/page/M0/S755/755589.html

本文只介绍如何应用JSch实现的SFTP功能。

SFTP是Secure File Transfer Protocol的缩写,安然文件传送和谈。可认为传输文件供给一种安然的加密办法。SFTP 为 SSH的一部份,是一种传输文件到办事器的安然体式格式。SFTP是应用加密传输认证信息和传输的数据,所以,应用SFTP是很是安然的。然则,因为这种传输体式格式应用了加密/解密技巧,所以传输效力比通俗的FTP要低得多,若是您对收集安然性请求更高时,可以应用SFTP庖代FTP。(来自百度的申明)

要应用JSch,须要下载它的jar包,请从官网下载它:http://www.jcraft.com/jsch/

ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的办法,如:

put():      文件上传

get():      文件下载

cd():       进入指定目次

ls():       获得指定目次下的文件列表

rename():   重定名指定文件或目次

rm():       删除指定文件

mkdir():    创建目次

rmdir():    删除目次

等等(这里省略了办法的参数,put和get都有多个重载办法,具体请看源代码,这里不一一列出。)

JSch支撑三种文件传输模式:

OVERWRITE 完全覆盖模式,这是JSch的默认文件传输模式,即若是目标文件已经存在,传输的文件将完全覆盖目标文件,产生新的文件。
RESUME

恢复模式,若是文件已经传输一项目组,这时因为收集或其他任何原因导致文件传输中断,若是下一次传输雷同的文件,

则会从上一次中断的处所续传。

APPEND 追加模式,若是目标文件已存在,传输的文件将在目标文件后追加。
创建ChannelSftp对象

编写一个对象类,按照ip,用户名及暗码获得一个SFTP channel对象,即ChannelSftp的实例对象,在应用法度中就可以应用该对象来调用SFTP的各类操纵办法。

SFTPChannel.java

  1 package com.longyg.sftp;
  2
  3
  4
  5 import java.util.Map;
  6
  7 import java.util.Properties;
  8
  9
 10
 11 import org.apache.log4j.Logger;
 12
 13
 14
 15 import com.jcraft.jsch.Channel;
 16
 17 import com.jcraft.jsch.ChannelSftp;
 18
 19 import com.jcraft.jsch.JSch;
 20
 21 import com.jcraft.jsch.JSchException;
 22
 23 import com.jcraft.jsch.Session;
 24
 25
 26
 27 public class SFTPChannel {
 28
 29     Session session = null;
 30
 31     Channel channel = null;
 32
 33
 34
 35     private static final Logger LOG = Logger.getLogger(SFTPChannel.class.getName());
 36
 37
 38
 39     public ChannelSftp getChannel(Map<String, String> sftpDetails, int timeout) throws JSchException {
 40
 41
 42
 43         String ftpHost = sftpDetails.get(SFTPConstants.SFTP_REQ_HOST);
 44
 45         String port = sftpDetails.get(SFTPConstants.SFTP_REQ_PORT);
 46
 47         String ftpUserName = sftpDetails.get(SFTPConstants.SFTP_REQ_USERNAME);
 48
 49         String ftpPassword = sftpDetails.get(SFTPConstants.SFTP_REQ_PASSWORD);
 50
 51
 52
 53         int ftpPort = SFTPConstants.SFTP_DEFAULT_PORT;
 54
 55         if (port != null && !port.equals("")) {
 56
 57             ftpPort = Integer.valueOf(port);
 58
 59         }
 60
 61
 62
 63         JSch jsch = new JSch(); // 创建JSch对象
 64
 65         session = jsch.getSession(ftpUserName, ftpHost, ftpPort); // 按照用户名,主机ip,端口获取一个Session对象
 66
 67         LOG.debug("Session created.");
 68
 69         if (ftpPassword != null) {
 70
 71             session.setPassword(ftpPassword); // 设置暗码
 72
 73         }
 74
 75         Properties config = new Properties();
 76
 77         config.put("StrictHostKeyChecking", "no");
 78
 79         session.setConfig(config); // 为Session对象设置properties
 80
 81         session.setTimeout(timeout); // 设置timeout时候
 82
 83         session.connect(); // 经由过程Session建树链接
 84
 85         LOG.debug("Session connected.");
 86
 87
 88
 89         LOG.debug("Opening Channel.");
 90
 91         channel = session.openChannel("sftp"); // 打开SFTP通道
 92
 93         channel.connect(); // 建树SFTP通道的连接
 94
 95         LOG.debug("Connected successfully to ftpHost = " + ftpHost + ",as ftpUserName = " + ftpUserName
 96
 97                 + ", returning: " + channel);
 98
 99         return (ChannelSftp) channel;
100
101     }
102
103
104
105     public void closeChannel() throws Exception {
106
107         if (channel != null) {
108
109             channel.disconnect();
110
111         }
112
113         if (session != null) {
114
115             session.disconnect();
116
117         }
118
119     }
120
121 }
时间: 2024-07-29 05:50:06

JSch - Java实现的SFTP(文件上传详解篇)的相关文章

JSch - Java实现的SFTP(文件上传详解篇) 转

JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. 本文只介绍如何使用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SFTP是使用加密传输认证信息和传输

【转】JSch - Java实现的SFTP(文件上传详解篇)

JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. 本文只介绍如何使用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SFTP是使用加密传输认证信息和传输

JSch - Java实现的SFTP(文件上传详解篇)(转)

JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. 本文只介绍如何使用JSch实现的SFTP功能. SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式.SFTP是使用加密传输认证信息和传输

Struts2之struts2文件上传详解

一.学习案例:通过在uploadfile.jsp页面填写完表单,提交后跳转到success.jsp页面,然后验证upload包下上传文件是否成功. 二.案例分析:struts2文件上传并不是表面上看的只需简单配置就可以上传文件.实际是分为两步的.1.struts2首先将客户端上传的文件保存到struts.multipart.saveDir键所指定的目录,如果该键所对应的目录不存在,就会保存到javax.servlet.context.tempdir环境变量所指定的目录中.2.Action中所定义

第十六部分_Struts2.1文件上传详解

文件上传要求: 表单设为post enctype="multipart/form-data" 服务器端File对应的名字与jsp中指定的文件name相同(对于真正上传的文件), 而String *FileName对应上传的文件名(*表示jsp中文件name) 添加Jar包(commons-io-1.3.2.jar),否则上传失败,抛出io相关类找不到的信息. 否则文件上传失败 首先,写一个upload.jsp: 引入标签库: <%@ taglib uri="/strut

c#大文件上传详解及实例代码

最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据.上传影音文件等.如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成. 下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用

局域网大文件上传详解及实例代码

javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data"> <

python爬虫:Multipart/form-data POST文件上传详解

简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form method="post"action="http://w.sohu.com" > <inputtype="text" name="txt1"> <inputtype="text" name="txt2"> </form

Multipart/form-data POST文件上传详解

简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form method="post"action="http://w.sohu.com" > <inputtype="text" name="txt1"> <inputtype="text" name="txt2"> </form