首页 > 代码库 > ftp上传下载
ftp上传下载
1 package com.mall.business.active; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 import java.text.SimpleDateFormat; 10 import java.util.Date; 11 import java.util.Properties; 12 import java.util.Vector; 13 14 import org.apache.log4j.LogManager; 15 import org.apache.log4j.Logger; 16 17 import com.jcraft.jsch.Channel; 18 import com.jcraft.jsch.ChannelSftp; 19 import com.jcraft.jsch.JSch; 20 import com.jcraft.jsch.JSchException; 21 import com.jcraft.jsch.Session; 22 import com.jcraft.jsch.SftpException; 23 import com.mall.timer.TimerManager; 24 25 public class SshSftp { 26 /** 27 * 利用JSch包实现SFTP下载、上传文件 28 * @param ip 29 * 主机IP 30 * @param user 31 * 主机登陆用户名 32 * @param psw 33 * 主机登陆密码 34 * @param port 35 * 主机ssh2登陆端口 36 * @param url 37 * 保存位置 38 * @param imgUrl 39 * 保存位置(域名) 40 * @param localpath 41 * 本地文件位置 42 * @param newname 43 * 新文件名 44 */ 45 private static Logger log=LogManager.getLogger(SshSftp.class); 46 47 public static String sshSftp(String ip, String user, String psw, int port, 48 String url, String imgUrl, String localpath, String newname) { 49 Session session = null; 50 Channel channel = null; 51 ChannelSftp sftp = null; 52 53 JSch jsch = new JSch(); 54 try { 55 if (port <= 0) { 56 // 连接服务器,采用默认端口-1 57 session = jsch.getSession(user, ip); 58 } else { 59 // 采用指定的端口连接服务器 60 session = jsch.getSession(user, ip, port); 61 } 62 63 // 如果服务器连接不上,则抛出异常 64 if (session == null) { 65 log.info("未连接服务器:session is null"); 66 return null; 67 //throw new Exception("session is null"); 68 } 69 70 // 设置登陆主机的密码 71 session.setPassword(psw);// 设置密码 72 // 设置第一次登陆的时候提示,可选值:(ask | yes | no) 73 session.setConfig("StrictHostKeyChecking", "no"); 74 // 设置登陆超时时间 75 session.connect(30000); 76 77 // 创建sftp通信通道 78 channel = (Channel) session.openChannel("sftp"); 79 channel.connect(10000); 80 sftp = (ChannelSftp) channel; 81 }catch(Exception e){ 82 log.info("未连接服务器"+e.getMessage()); 83 return null; 84 } 85 86 try { 87 sftp.ls(url); // 首先查看下目录,如果不存在,系统会被错,捕获这个错,生成新的目录。 88 } catch (Exception e) { 89 try { 90 sftp.mkdir(url); 91 } catch (SftpException e1) { 92 log.info("创建文件夹异常,msg:"+e1.getMessage()); 93 return null; 94 } 95 } 96 97 Date date = new Date(); 98 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); 99 try {100 sftp.ls(url+"/"+format.format(date)); // 首先查看下目录,如果不存在,系统会被错,捕获这个错,生成新的目录。101 } catch (Exception e) {102 try {103 sftp.mkdir(url+"/"+format.format(date));104 } catch (SftpException e1) {105 log.info("创建文件夹异常,msg:"+e1.getMessage());106 return null;107 }108 }109 110 try{111 // 进入服务器指定的文件夹112 sftp.cd(url+"/"+format.format(date));113 114 // 列出服务器指定的文件列表115 /*116 * Vector v = sftp.ls("*.jsp"); for(int i=0;i<v.size();i++){117 * System.out.println(v.get(i)); }118 */119 120 // 以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换以下流就可以了121 OutputStream outstream = sftp.put(newname);122 // InputStream instream = new FileInputStream(new123 // File("H:/downloadFile/1223.jpg"));124 InputStream instream = new FileInputStream(new File(localpath));125 126 byte b[] = new byte[1024];127 int n;128 while ((n = instream.read(b)) != -1) {129 outstream.write(b, 0, n);130 }131 132 outstream.flush();133 outstream.close();134 instream.close();135 136 return imgUrl+format.format(date)+"/"+newname;137 }catch (Exception e) {138 e.printStackTrace();139 return null;140 } finally {141 session.disconnect();142 channel.disconnect();143 }144 }145 146 public static void main(String[] args) {147 String ip = "***";148 String user = "**";149 String psw = "**";150 int port = 22;151 String url = "**";152 String imgUrl = "***";153 String localpath = "H:/downloadFile/接口测试文档.doc";154 String newname = "aaa.doc";155 156 SshSftp sftp = new SshSftp();157 sftp.sshSftp(ip,user,psw,port,url,imgUrl,localpath,newname);158 159 }160 161 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。