首页 > 开发 > Java > 正文

Java使用SFTP上传文件到服务器的简单使用

2024-07-13 10:04:14
字体:
来源:转载
供稿:网友

最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询。具体代码如下所示:

 /**  * 将文件上传到服务器  *   * @param filePath  *   文件路径  * @param channelSftp  *   channelSftp对象  * @return  */ public static boolean uploadFile(String filePath, ChannelSftp channelSftp) {  OutputStream outstream = null;  InputStream instream = null;  boolean successFlag = false;  try {   File isfile = new File(filePath);   if (isfile.isFile()) {    outstream = channelSftp.put(isfile.getName());    File file = new File(filePath);    if (file.exists()) {     instream = new FileInputStream(file);     byte b[] = new byte[1024];     int n;     while ((n = instream.read(b)) != -1) {      outstream.write(b, 0, n);     }     outstream.flush();    }    successFlag = true;   }  } catch (Exception e) {   e.printStackTrace();  } finally {   try {    if (instream != null) {     instream.close();    }    if (outstream != null) {     outstream.close();    }   } catch (IOException e) {    e.printStackTrace();   }  }  return successFlag; } private static Session initJschSession()   throws JSchException {  int ftpPort = 0;  String ftpHost = "";  String port = "00"; //sftp的端口号  String ftpUserName = ""; //用户名  String ftpPassword = ""; //链接的密码  String privateKey = ""; //  String passphrase = "";  if (port != null && !port.equals("")) {   ftpPort = Integer.valueOf(port);  }  JSch jsch = new JSch(); // 创建JSch对象  if (StringUtils.isNotBlank(privateKey)    && StringUtils.isNotBlank(passphrase)) {   jsch.addIdentity(privateKey, passphrase);  }  if (StringUtils.isNotBlank(privateKey)    && StringUtils.isBlank(passphrase)) {   jsch.addIdentity(privateKey);  }  jsch.getSession(ftpUserName, ftpHost, ftpPort);  Session session = jsch.getSession(ftpUserName, ftpHost, ftpPort); // 根据用户名,主机ip,端口获取一个Session对象  if (StringUtils.isNotBlank(ftpPassword)) {   session.setPassword(ftpPassword); // 设置密码  }  return session; } /**  * 获取ChannelSftp链接  *   * @param timeout  *   超时时间  * @return 返回ChannelSftp对象  * @throws JSchException  */ public static ChannelSftp getChannelSftp(Session session, int timeout)   throws JSchException {  Channel channel = null;  Properties config = new Properties();  config.put("StrictHostKeyChecking", "no");  session.setConfig(config); // 为Session对象设置properties  session.setTimeout(timeout); // 设置timeout时间  session.connect(); // 通过Session建立链接  channel = session.openChannel("sftp"); // 打开SFTP通道  channel.connect(); // 建立SFTP通道的连接  return (ChannelSftp) channel;  } /**  * 断开sftp链接  *   * @param session  *   会话  * @param channel  *   通道  */ public static void closeConnection(Channel channel, Session session) {  try {   if (session != null) {    session.disconnect(); //关闭session链接   }   if (channel != null) {    channel.disconnect(); //断开连接   }  } catch (Exception e) {   e.printStackTrace();  } }

这里的用户名密码都是自己设置,这里的方法进行了简单的封装,方便使用。

以上所述是小编给大家介绍的Java使用SFTP上传文件到服务器的简单使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VeVb武林网网站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表