iis服务器助手广告
返回顶部
首页 > 资讯 > 服务器 >java连接sftp服务器实现上传下载
  • 869
分享到

java连接sftp服务器实现上传下载

java 2023-10-07 19:10:45 869人浏览 薄情痞子
摘要

前言 我最初的需求是java读取远程windows服务器的文件。查了一圈,发现将远程服务器作为ftp服务器是最方便快捷的。着手准备,首先要让远程服务器提供ftp服务,再做相关配置,然后通过代码配置远程

前言

我最初的需求是java读取远程windows服务器的文件。查了一圈,发现将远程服务器作为ftp服务器是最方便快捷的。着手准备,首先要让远程服务器提供ftp服务,再做相关配置,然后通过代码配置远程地址,用户名密码(ftp服务设置)读取文件。

一、给目标服务器安装sshd服务

  • 我目前使用的是 freeSSHd.exe,下载后按照步骤一步步安装,最后俩弹窗,第一个选,第二个选
    创建私钥,选是
    作为系统服务,选否

二、基础配置

  1. 双击打开安装好的程序,在右下角找到图标,右键,setting
    加粗样式
  2. 按照步骤配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. unload之后重新打开,配置生效
    在这里插入图片描述

三、java实现上传下载(main方法中有测试用例)

import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.util.*;import com.jcraft.jsch.*;import org.apache.commons.io.IOUtils;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class SFTPUtil {    private transient Logger log = LoggerFactory.getLogger(this.getClass());    private ChannelSftp sftp;    private Session session;        private String username;        private String passWord;        private String privateKey;        private String host;        private int port;        public SFTPUtil(String username, String password, String host, int port) {        this.username = username;        this.password = password;        this.host = host;        this.port = port;    }        public SFTPUtil(String username, String host, int port, String privateKey) {        this.username = username;        this.host = host;        this.port = port;        this.privateKey = privateKey;    }    public SFTPUtil(){}        public void login(){        try {            JSch jsch = new JSch();            if (privateKey != null) {                jsch.addIdentity(privateKey);// 设置私钥                log.info("sftp connect,path of private key file:{}" , privateKey);            }            log.info("sftp connect by host:{} username:{}",host,username);            session = jsch.getSession(username, host, port);            log.info("Session is build");            if (password != null) {                session.setPassword(password);            }            Properties config = new Properties();            config.put("StrictHosTKEyChecking", "no");            session.setConfig(config);            session.connect();            log.info("Session is connected");            Channel channel = session.openChannel("sftp");            channel.connect();            log.info("channel is connected");            sftp = (ChannelSftp) channel;            log.info(String.fORMat("sftp server host:[%s] port:[%s] is connect successfull", host, port));        } catch (JSchException e) {            log.error("Cannot connect to specified sftp server : {}:{} \n Exception message is: {}", new Object[]{host, port, e.getMessage()});        }    }        public void loGout(){        if (sftp != null) {            if (sftp.isConnected()) {                sftp.disconnect();                log.info("sftp is closed already");            }        }        if (session != null) {            if (session.isConnected()) {                session.disconnect();                log.info("sshSession is closed already");            }        }    }        public void upload(String directory, String sftpFileName, InputStream input) throws SftpException{        try {            sftp.cd(directory);        } catch (SftpException e) {            log.warn("directory is not exist");            sftp.mkdir(directory);            sftp.cd(directory);        }        sftp.put(input, sftpFileName);        log.info("file:{} is upload successful" , sftpFileName);    }        public void upload(String directory, String uploadFile) throws FileNotFoundException, SftpException{        File file = new File(uploadFile);        upload(directory, file.getName(), new FileInputStream(file));    }        public void upload(String directory, String sftpFileName, byte[] byteArr) throws SftpException{        upload(directory, sftpFileName, new ByteArrayInputStream(byteArr));    }        public void upload(String directory, String sftpFileName, String dataStr, String charsetName) throws UnsupportedEncodingException, SftpException{        upload(directory, sftpFileName, new ByteArrayInputStream(dataStr.getBytes(charsetName)));    }        public void download(String directory, String downloadFile, String saveFile) throws SftpException, FileNotFoundException{        if (directory != null && !"".equals(directory)) {            sftp.cd(directory);        }        File file = new File(saveFile);        sftp.get(downloadFile, new FileOutputStream(file));        log.info("file:{} is download successful" , downloadFile);    }        public byte[] download(String directory, String downloadFile) throws SftpException, IOException{        if (directory != null && !"".equals(directory)) {            sftp.cd(directory);        }        InputStream is = sftp.get(downloadFile);        byte[] fileData = IOUtils.toByteArray(is);        log.info("file:{} is download successful" , downloadFile);        return fileData;    }        public void delete(String directory, String deleteFile) throws SftpException{        sftp.cd(directory);        sftp.rm(deleteFile);    }        public Vector<?> listFiles(String directory) throws SftpException {        return sftp.ls(directory);    }    public static void main(String[] args) throws SftpException, IOException {//        SFTPUtil sftp = new SFTPUtil("user1", "123456", "192.168.0.244", 22);//        sftp.login();//        byte[] buff = sftp.download("/", "index.js");//        SFTPUtil sftp = new SFTPUtil("user", "123456", "192.168.0.162", 22);//        sftp.login();//        byte[] buff = sftp.download("/a", "ECDSAKey.cfg");//        System.out.println(new String(buff));//        File file = new File("C:\\Program Files (x86)\\NetSarang\\Xmanager Enterprise 4\\2.txt");//        InputStream is = new FileInputStream(file);//        sftp.upload("/usr/ywnysftp/upload/test", "csdn1.png", is);//        sftp.upload("/upload", "2.txt", is);        // 下载,上面的是之前的测试案例        SFTPUtil sftp = new SFTPUtil("user", "12345678", "192.168.0.64", 22);        sftp.login();        byte[] buff = sftp.download("/", "导入数据.xlsx");        IOUtils.write(buff, new FileOutputStream("C:\\Users\\win20\\Desktop\\file\\导入数据.xlsx"));        sftp.logout();    }}

来源地址:https://blog.csdn.net/laolvbig/article/details/132024462

--结束END--

本文标题: java连接sftp服务器实现上传下载

本文链接: https://www.lsjlt.com/news/424782.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java连接sftp服务器实现上传下载
    前言 我最初的需求是java读取远程windows服务器的文件。查了一圈,发现将远程服务器作为ftp服务器是最方便快捷的。着手准备,首先要让远程服务器提供ftp服务,再做相关配置,然后通过代码配置远程...
    99+
    2023-10-07
    java
  • java- SFTP文件上传下载
    JSch - SFTP文件上传下载 文章目录 JSch - SFTP文件上传下载1. JSch简介2. ChannelSftp常用ApiJSch支持三种文件传输模式文件上传 put() 方法文...
    99+
    2023-09-30
    java 服务器
  • Python使用sftp实现上传和下载功能
    在Python中可以使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能。 1.功能实现 1、根据输入参数判断是文件还是目录,进行上传和下载 2、本地参数local需...
    99+
    2024-04-02
  • nodejs怎么连接ftp实现上传下载
    这篇文章主要介绍“nodejs怎么连接ftp实现上传下载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么连接ftp实现上传下载”文章能帮助大家解决问题。依赖//ftp 模块是...
    99+
    2023-07-06
  • Java使用Sftp和Ftp实现对文件的上传和下载
    sftp和ftp两种方式区别,还不清楚的,请自行百度查询,此处不多赘述。完整代码地址在结尾!! 第一步,导入maven依赖 <!-- FTP依赖包 --> <...
    99+
    2024-04-02
  • JSch中怎么使用sftp协议实现服务器文件上传下载
    这篇文章主要介绍了JSch中怎么使用sftp协议实现服务器文件上传下载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JSch中怎么使用sftp协议实现服务器文件上传下载文章都会有所收获,下面我们一起来看看吧。J...
    99+
    2023-06-29
  • Python如何使用sftp实现上传和下载功能
    这篇文章主要介绍了Python如何使用sftp实现上传和下载功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效...
    99+
    2023-06-14
  • Java如何使用Sftp和Ftp实现对文件的上传和下载
    这篇文章将为大家详细讲解有关Java如何使用Sftp和Ftp实现对文件的上传和下载,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一步,导入maven依赖<!-- FTP依赖包 ...
    99+
    2023-06-14
  • Java实现ftp的上传、下载
    ftp登录命令: windows环境下登录:文件管理资源的地址栏中输入“ftp://ip:port”,然后根据提示输入账号、密码。linux环境下登录:ftp ip,然后根据提示输入账号、密码,lin...
    99+
    2023-09-26
    java linux 服务器
  • SpringBoot如何集成SFTP客户端实现文件上传下载
    这篇文章主要介绍“SpringBoot如何集成SFTP客户端实现文件上传下载”,在日常操作中,相信很多人在SpringBoot如何集成SFTP客户端实现文件上传下载问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-06
  • Java实现HDFS文件上传下载
    本文实例为大家分享了利用Java实现HDFS文件上传下载的具体代码,供大家参考,具体内容如下 1、pom.xml配置 <!--配置--> <properties&g...
    99+
    2024-04-02
  • java实现文件上传和下载
    本文实例为大家分享了java实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件的上传 upload:文件上传 客户端通过表单的文件域file  把客户端的文件 上...
    99+
    2024-04-02
  • java实现文件上传下载功能
    本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下 1.上传单个文件 Controller控制层 import java.io.File; imp...
    99+
    2024-04-02
  • Java实现FTP上传与下载功能
    本文实例为大家分享了Java实现FTP上传与下载的具体代码,供大家参考,具体内容如下 JAVA操作FTP服务器,只需要创建一个FTPClient即可,所有的操作都封装在FTPClie...
    99+
    2024-04-02
  • java实现上传和下载工具类
    本文实例为大家分享了文件上传到ftp服务工具类,供大家参考,具体内容如下直接引用此java工具类就好import java.io.File;import java.io.FileInputStream;import java.io.File...
    99+
    2023-05-31
    java 上传 下载
  • vscode远程连接服务器(remote ssh)+上传本地文件到服务器(sftp)
    一、vscode远程连接服务器 点击vscode右边工具栏点击拓展,搜索remote ssh并安装 安装完成后,左边工具栏会出现一个电脑图标的远程资源管理器,点击后选择SSH TARGETS的设置 然后选择第一个.\.ssh\confi...
    99+
    2023-09-02
    服务器 vscode ssh
  • Python Paramiko实现sftp文件上传下载以及远程执行命令
    Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令、文件传输等功能。 安装模块默认Python没有自带,需要手动安装:pip3 install paramiko#!/usr/...
    99+
    2023-01-31
    上传下载 命令 文件
  • vsFTPd服务器如何实现匿名上传下载
    这篇文章主要介绍了vsFTPd服务器如何实现匿名上传下载,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先我们要修改一下vsftpd.conf ,此文件位于 /etc/目录下...
    99+
    2023-06-16
  • python实现FTP上传下载
    要求:支持多用户在线的FTP程序 要求:1、用户加密认证2、允许同时多用户登录3、每个用户有自己的家目录 ,且只能访问自己的家目录4、对用户进行磁盘配额,每个用户的可用空间不同5、允许用户在ftp server上随意切换目录6、允许用户查看...
    99+
    2023-01-31
    上传下载 python FTP
  • java实现ftp文件上传下载功能
    本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下package getUrlPic;import java.io.ByteArrayInputStream;import java.io.IOException;...
    99+
    2023-05-31
    ftp 上传 下载
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作