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

Find and replace with sed command in Linux

Find and replace feature is always handy. It can turn into a torture when it comes to change or delete a simple constant string in a text file. There is a handy tool in linux for doing these kind of tihngs. Actually sed is not a text editor but it is used outside of the text file to make changes.