Skip to main content

Java file transfer with sftp

JSch is an ssh2 library for java and can be used to connect ssh server and make remote file transfers. Following example is an implementation of jsch remote file transfer. jsch library is is available at the maven repository, http://jsch.sf.net/maven2/

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="com.jcraft.jsch.*" %>
<%@ page import="com.jcraft.jsch.ChannelSftp.*" %>

<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.lang.String" %>


<%
String ftpHost = "/** remote computer, eg: 192.168.1.2 */";
int ftpPort = 22;
String ftpUserName = "<username>";
String ftpPassword = "<password>";
String ftpRemoteDirectory = "/** remote directory, eg: /tmp/ */";
String localDirectory = "/** local directory, eg: /tmp/test/ */";
String fileToTransmit = localDirectory + "/** file name, eg: test.txt */";
String fileForReceive = ftpRemoteDirectory + "/** file name, eg: test.txt */";
String curRemotePath = ".";
Session sess = null;
Channel chan = null;
ChannelSftp c = null;
Vector<String> remoteFileList = new Vector<String>();
File f = new File(fileToTransmit);
File ff = new File(fileForReceive);


try {
        JSch jsch = new JSch();
Properties conf = new Properties();
conf.put("StrictHostKeyChecking", "no");
sess = jsch.getSession(ftpUserName, ftpHost);
sess.setConfig(conf);
sess.setPort(ftpPort);
sess.setPassword(ftpPassword);
sess.connect();
chan = (ChannelSftp) sess.openChannel("sftp");
chan.connect();
c = (ChannelSftp)chan;
c.cd(ftpRemoteDirectory);
c.put(new FileInputStream(f), ff.getName());
        out.println(ftpHost + " File Copied.");

    } catch (Exception e) {
out.println("Unable to copy file. " + e.toString());
}


c.disconnect();
chan.disconnect();
sess.disconnect();

Comments

Popular posts from this blog