ftp文件上传下载

文件上传到服务器一般采用两种方式,一种是ftp上传(默认端口:21),一种是sftp上传(默认端口:22)。sftp是ssh的一部分,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

sftp实现:

依赖:

<dependency>     
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>     
    <version>0.1.54</version> 
</dependency>

sftp不允许直接连接服务器,同过Session获取连接,ChannlSftp为核心类

private	static ChannlSftp ftpClient = null;
private	static Session session = null; 
/**
  * 连接服务器
*/
public static ChannlSftp getConnect() throws Exception {
  JSch jsch = new JSch();//创建客户端
  session = jsch.getSession(ftpUsername, ftpPort + "", ftpPort);//连接属性
  session.setPassword(ftpPassword);//输入密码
  //设置
  Properties config = new Properties();
  config.put("StrictHostKeyChecking", "no"); // 不验证 HostKey
  //激活设置
  session.setConfig(config);
  //登录
  try {
    session.connect();
  } catch (Exception e) {
    if (session.isConnected())
      session.disconnect();
    logger.error("连接服务器失败,请检查主机[" + ftpIp + "],端口[" + ftpPort
                 + "],用户名[" + ftpUsername + "],端口[" + ftpPort
                 + "]是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝.");
  }
  ftpClient = (ChannlSftp)session.openChannel("sftp");
  //打开通道
  try {
    ftpClient.connect();
  } catch (Exception e) {
    if (channel.isConnected())
      channel.disconnect();
    logger.error("连接服务器失败,请检查主机[" + ftpIp + "],端口[" + ftpPort
                 + "],用户名[" + ftpUsername + "],密码是否正确,以上信息正确的情况下请检查网络连接是否正常或者请求被防火墙拒绝.");
  }

  return ftpClient;
}

/**
 *断开连接
 */
public static void close() throws Exception {
        ftpClient.disconnect();
        sftp.exit();
    	session.disconnect();
}

/**
     * 上传文件
     *
     * @param directory  上传的目录-相对于SFPT设置的用户访问目录,
     *                   为空则在SFTP设置的根目录进行创建文件(除设置了服务器全磁盘访问)
     * @param uploadFile 要上传的文件全路径
     */
    public void upload(String directory, String uploadFile) throws Exception {
       
        try {
            ftpClient.cd(directory); //进入目录
        } catch (SftpException sException) {
            //指定上传路径不存在
            if (sftp.SSH_FX_NO_SUCH_FILE == sException.id) { 
                ftpClient.mkdir(directory);//创建目录
                ftpClient.cd(directory);  //进入目录
            }
        }
        try {
            File file = new File(uploadFile);
            InputStream in = new FileInputStream(file);
            ftpClient.put(in, file.getName());
            in.close();  
    	} catch (Exception e) {
            throw new Exception(e.getMessage(),e);
        } finally {
            in.close();
        }
    }


上传下载:参考文章:https://blog.csdn.net/u012909738/article/details/74328669
此文只有上传下载,与原文有一定冲突,酌情参考
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值