1. 注意问题

uri的格式: sftp://zhangsan:123456@10.10.10.10:22

dir问题 : 判断有没有 没有创建 然后进入 类推

config问题: StrictHostKeyChecking=no

进度问题 : 需要变量保存

2. 代码

    private void transfer_sftp(String attrPath, Element groupNode, long size) throws JSchException, SftpException, UnsupportedEncodingException{
attrPath = attrPath.replaceAll("sftp://", "");
String[] tmps = attrPath.split(":");
String dstUserName = tmps[0];
int port = 22;
String portstr = tmps[2].replaceAll("/", "");
try {
port = Integer.parseInt(portstr);
} catch (NumberFormatException e) {
e.printStackTrace();
}
String[] tmp = tmps[1].split("@");
String dstPassword = tmp[0];
String sftpIP = tmp[1];
List<?> files = groupNode.selectNodes("File");
for(int k=0; k<files.size(); k++){
JSch jsch = new JSch();
Session session = jsch.getSession(dstUserName, sftpIP, port);
logger.info("JSch Session created: user:"+dstUserName + ",password="+dstPassword+",sftpIP="+sftpIP+",port="+port);
session.setPassword(dstPassword);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
session.setConfig(sshConfig);
session.connect();
logger.info("JSch Session connected > user:"+dstUserName);
ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
channelSftp.connect();
logger.info("Connected to "+ sftpIP);
Element file = (Element) files.get(k);
String srcFilePath = file.elementText("SrcFileName");
String dstFilePath = file.elementText("DstFileName");
logger.info("upload file on sftp protocol >> srcFilePath="+srcFilePath + ",dstFilePath="+dstFilePath);
int index = dstFilePath.lastIndexOf("/");
String path = dstFilePath.substring(0, index + 1);
String filename = dstFilePath.substring(index + 1, dstFilePath.length());
if (path.startsWith("/"))
path = path.substring(1);
logger.info("dest path:"+path);
if (filename.startsWith("/"))
filename = filename.substring(1);
String[] pathArray = path.split("/");
for (String pathStr : pathArray) {
try {
logger.info("channelsftp dir ::"+pathStr);
Vector ls = channelSftp.ls(pathStr);
if(ls != null){
channelSftp.cd(pathStr);
}
} catch (Exception e) {
logger.info("channelsftp catch mkdir ::"+pathStr);
channelSftp.mkdir(pathStr);
channelSftp.cd(pathStr);
e.printStackTrace();
}
}
// String dir = new String(path.getBytes("gb2312"), "iso-8859-1");
// String destName = new String(filename.getBytes("gb2312"), "iso-8859-1");
// System.out.println("上传目录名名:::"+dir);
// System.out.println("上传后文件名:::"+destName);
// channelSftp.put(srcFilePath, dstFilePath, new SftpProgressMonitor() {
channelSftp.put(srcFilePath, filename, new SftpProgressMonitor() { long n = 0L;
long _max = 0L; public long getN() {
return n;
} public void setN(long n) {
this.n = n;
} @Override
public void init(int arg0, String arg1, String arg2, long max) {
this._max = max;
logger.info("SFTP Transferring begin....._max="+_max);
} @Override
public void end() {
logger.info("SFTP Transferring end....");
} @Override
public boolean count(long count) {
n += count;
// logger.info("SFTP Transferring count="+count+",n="+n);
if(_max!=0){
run_progress = (int) ((n*100)/_max);
// logger.info("the progress of upload file through sftp :" + run_progress + "%");
}
return true;
}
}, ChannelSftp.OVERWRITE);
channelSftp.quit();
session.disconnect(); }
}

sftp java 上传的更多相关文章

  1. SFTP文件上传与下载

    SFTP是对ftp进行加密的一种文件协议. 首先是先引入:jsch-0.1.42-sources.jar与jsch-0.1.42.jar包 SFTP文件上传与下载. import java.io.Fi ...

  2. edtftpj让Java上传FTP文件支持断点续传

    在用Java实现FTP上传文件功能时,特别是上传大文件的时候,可以需要这样的功能:程序在上传的过程中意外终止了,文件传了一大半,想从断掉了地方继续传:或者想做类似迅雷下载类似的功能,文件太大,今天传一 ...

  3. Java上传文件FTP服务器代码

    1. 在实际的应用重,通常是通过程序来进行文件的上传. 2. 实现java上传文件到ftp服务器中 新建maven项目 添加依赖 <dependency> <groupId>c ...

  4. java上传excel文件及解析

      java上传excel文件及解析 CreateTime--2018年3月5日16:25:14 Author:Marydon 一.准备工作 1.1 文件上传插件:swfupload: 1.2 文件上 ...

  5. java 上传文件到 ftp 服务器

    1.  java 上传文件到 ftp 服务器 package com.taotao.common.utils; import java.io.File; import java.io.FileInpu ...

  6. Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法

    最近从 Op 那里报来一个问题,说是SFTP上传文件不成功.拿到的 Exception 如下: Caused by: java.lang.NoClassDefFoundError: Could not ...

  7. java 通过sftp服务器上传下载删除文件

    最近做了一个sftp服务器文件下载的功能,mark一下: 首先是一个SftpClientUtil 类,封装了对sftp服务器文件上传.下载.删除的方法 import java.io.File; imp ...

  8. java实现sftp客户端上传文件夹的功能

    使用的jar: <dependencies> <dependency> <groupId>jsch</groupId> <artifactId&g ...

  9. java实现sftp客户端上传文件以及文件夹的功能

    1.依赖的jar文件 jsch-0.1.53.jar 2.登录方式有密码登录,和密匙登录 代码: 主函数: import java.util.Properties; import com.cloudp ...

随机推荐

  1. P1642 规划 01分数规划+树形DP

    $ \color{#0066ff}{ 题目描述 }$ 某地方有N个工厂,有N-1条路连接它们,且它们两两都可达.每个工厂都有一个产量值和一个污染值.现在工厂要进行规划,拆除其中的M个工厂,使得剩下的工 ...

  2. jquery将json数据放入表格当中

    数据: var datas = [{ name:"淘宝", url:"www.taobao.com", type:"购物网站" },{ na ...

  3. 清除bean中所有非基本数据类型的属性值

    利用beanutils清除javabean中所有非基本数据类型的属性值: import com.google.gson.Gson; import lombok.Data; import org.apa ...

  4. HTML attribute 与 DOM property 的对比

    HTML attribute vs. DOM property 要想理解 Angular 绑定如何工作,重点是搞清 HTML attribute 和 DOM property 之间的区别. attri ...

  5. oracle使用已有vid快速新建虚拟机

    有时候需新建虚拟机,但是每一次新建都花费很多时间,这里在oracle中快速新建虚拟机,只需要复制已有的vdi,然后修改uuid即可   windows下在cmd下输入命令 cd C:\Program ...

  6. 我的Python升级打怪之路【五】:Python模块

    模块,是一些代码实现了某个功能的集合 模块的分类: 自定义模块 第三方模块 内置模块 导入模块 import module from module.xx.xx import xx from modul ...

  7. Starting vsftpd for vsftpd: [FAILED]问题的解决

    问题描述 [root@bigdatamaster etc]# rpm -qa| grep vsftpd vsftpd--.el6.x86_64 [root@bigdatamaster etc]# [r ...

  8. Win中同时安装python2和python3及SulimeText3的python IDE搭建

    一.下载安装Sublime Text3,初衷是不想忍受pycharm的打开速度,想享受下飞的质感.Sublime Text3的安装已经久远,请自行google. 二.安装python2.7与pytho ...

  9. 微信小程序-tab标签栏实现教程

    一.摘要 tab栏(标签切换栏)是app中常见的一种交互方式,它可以承载更多的内容,同时又兼顾友好体验的优点.但在小程序中,官方并没有为咱们提供现成的组件.因此我们程序员展现才艺的时候到了(其实市面上 ...

  10. hibernate 学习笔记1

    Hibernate session1 1.连接池的最小连接数指的是连接池初始化之后,就存在的连接数,这些连接放在内存中,等待被使用.最大连接数限定了连接池中最大同时连接数量,如果超过了这个数量,则进入 ...