小春BOOK

导航

公告

统计

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都删掉,就可以了。

posted on 2012-10-29 15:30 xiaoc.li 阅读(...) 评论(...)  编辑 收藏