sftp上传-------------------------
使用的是jftp.jar包
代码如下:
/*******************************************************************************
* $Header: /PCVSdata/GZLRMIS/com.fhd.service.component/src/com/fhd/service/component/uploadfiletoFTP/FTPupload.java,v 1.2 2012/10/23 09:16:50 administrator Exp $
* $Revision: 1.2 $
* $Date: 2012/10/23 09:16:50 $
*
*==============================================================================
*
* Copyright (c) 2001-2006 Primeton Technologies, Ltd.
* All rights reserved.
*
* Created on 2010-3-31
*******************************************************************************/
package com.fhd.service.component.uploadfiletoFTP;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import com.eos.foundation.data.DataObjectUtil;
import com.eos.foundation.database.DatabaseUtil;
import com.eos.system.annotation.Bizlet;
import com.fhd.service.component.sdo.GuidGenerator;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.util.Properties;
import commonj.sdo.DataObject;
@Bizlet("")
public class FTPupload {
/**
* Description: 向FTP服务器上传文件
*
* @Version1.0 Sunrise Modified
* @param url
* FTP服务器hostname
* @param port
* FTP服务器端口
* @param username
* FTP登录账号
* @param password
* FTP登录密码
* @param ftppath
* FTP服务器保存目录
* @param filename
* 上传到FTP服务器上的文件名
* @param localpath
* 本地文件存放路径及文件名
* @return 成功返回true,否则返回false
*/
@Bizlet("")
public boolean uploadFile(String url, int port, String username,
String password, String ftppath, String filename, String localpath, String companyid) {
boolean result = false;
try{
port = 22;
System.out.println("--------sftp begin---------------");
System.out.println("--------url="+url);
System.out.println("--------port="+port);
System.out.println("--------username="+username);
System.out.println("--------password="+password);
System.out.println("--------ftppath="+ftppath);
System.out.println("--------filename="+filename);
System.out.println("--------localpath="+localpath);
System.out.println("--------sftp begin-------------");
FTPupload sf = new FTPupload();
System.out.println("--sftp connect--11--------begin----");
ChannelSftp sftp = sf.connectSftp(url, port, username, password);
System.out.println("--sftp connect--11--------begin uploadSftp----");
sf.uploadSftp(ftppath, localpath, filename, sftp);
//sf.download(directory, downloadFile, saveFile, sftp);
//sf.delete(directory, deleteFile, sftp);
System.out.println("--sftp connect--11--------end uploadSftp----");
}catch(Exception e){
e.printStackTrace();
}
return result;
}
/**
* 连接sftp服务器
* @param host 主机
* @param port 端口
* @param username 用户名
* @param password 密码
* @return
*/
public ChannelSftp connectSftp(String host, int port, String username, String password) {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jsch.getSession(username, host, port);
Session sshSession = jsch.getSession(username, host, port);
System.out.println("--sftp connect--1--------Session created----");
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("--sftp connect--2--------Session connected----");
System.out.println("--sftp connect--3--------Opening Channel----");
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
System.out.println("--sftp connect--4--------Connected to " + host + "----");
} catch (Exception e) {
}
return sftp;
}
/**
* 上传文件
* @param directory 上传的目录
* @param uploadFile 要上传的文件
* @param fileName 上传的目标文件名
* @param sftp
*/
public void uploadSftp(String directory, String uploadFile, String fileName, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file = new File(uploadFile);
sftp.put(new FileInputStream(file), fileName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
错误解决:
1、JFtp.jar里面包含有Apache的代码,Project如果存在jar中也有Apache,就会有冲突。将JFtp.jar里面的所有org包下的class都删掉,就可以了。