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

发布时间 - 2026-01-10 23:08:11    点击率:

最近用到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上传文件到服务器的简单使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# 使用sftp上传文件  # sftp服务器  # Java实现读取SFTP服务器指定目录文件的方法  # Java连接sftp服务器实现上传下载功能  # Java连接服务器的两种方式SFTP和FTP  # 详解Java使用Jsch与sftp服务器实现ssh免密登录  # java使用SFTP上传文件到资源服务器  # Java 项目连接并使用 SFTP 服务的示例详解  # 小编  # 上传文件  # 都是  # 在此  # 给大家  # 找了  # 所示  # 所述  # 给我留言  # 感谢大家  # 进行了  # 文件上传  # 端口号  # 疑问请  # 有任何  # file  # exists  # put  # FileInputStream  # getName 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  网站页面设计需要考虑到这些问题  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  网站制作价目表怎么做,珍爱网婚介费用多少?  如何在云虚拟主机上快速搭建个人网站?  免费网站制作appp,免费制作app哪个平台好?  教你用AI润色文章,让你的文字表达更专业  html如何与html链接_实现多个HTML页面互相链接【互相】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  高端建站如何打造兼具美学与转化的品牌官网?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何快速查询域名建站关键信息?  微信推文制作网站有哪些,怎么做微信推文,急?  Laravel怎么使用artisan命令缓存配置和视图  如何在阿里云购买域名并搭建网站?  如何确保FTP站点访问权限与数据传输安全?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  教学论文网站制作软件有哪些,写论文用什么软件 ?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何在Tomcat中配置并部署网站项目?  iOS验证手机号的正则表达式  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何快速搭建高效可靠的建站解决方案?  如何用已有域名快速搭建网站?  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何快速搭建个人网站并优化SEO?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel中的withCount方法怎么高效统计关联模型数量  长沙做网站要多少钱,长沙国安网络怎么样?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何为API生成Swagger或OpenAPI文档  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  如何基于云服务器快速搭建网站及云盘系统?  Laravel如何实现API资源集合?(Resource Collection教程)  香港服务器部署网站为何提示未备案?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Python结构化数据采集_字段抽取解析【教程】  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Python并发异常传播_错误处理解析【教程】