sftp java 上传
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 上传的更多相关文章
- SFTP文件上传与下载
SFTP是对ftp进行加密的一种文件协议. 首先是先引入:jsch-0.1.42-sources.jar与jsch-0.1.42.jar包 SFTP文件上传与下载. import java.io.Fi ...
- edtftpj让Java上传FTP文件支持断点续传
在用Java实现FTP上传文件功能时,特别是上传大文件的时候,可以需要这样的功能:程序在上传的过程中意外终止了,文件传了一大半,想从断掉了地方继续传:或者想做类似迅雷下载类似的功能,文件太大,今天传一 ...
- Java上传文件FTP服务器代码
1. 在实际的应用重,通常是通过程序来进行文件的上传. 2. 实现java上传文件到ftp服务器中 新建maven项目 添加依赖 <dependency> <groupId>c ...
- java上传excel文件及解析
java上传excel文件及解析 CreateTime--2018年3月5日16:25:14 Author:Marydon 一.准备工作 1.1 文件上传插件:swfupload: 1.2 文件上 ...
- java 上传文件到 ftp 服务器
1. java 上传文件到 ftp 服务器 package com.taotao.common.utils; import java.io.File; import java.io.FileInpu ...
- Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法
最近从 Op 那里报来一个问题,说是SFTP上传文件不成功.拿到的 Exception 如下: Caused by: java.lang.NoClassDefFoundError: Could not ...
- java 通过sftp服务器上传下载删除文件
最近做了一个sftp服务器文件下载的功能,mark一下: 首先是一个SftpClientUtil 类,封装了对sftp服务器文件上传.下载.删除的方法 import java.io.File; imp ...
- java实现sftp客户端上传文件夹的功能
使用的jar: <dependencies> <dependency> <groupId>jsch</groupId> <artifactId&g ...
- java实现sftp客户端上传文件以及文件夹的功能
1.依赖的jar文件 jsch-0.1.53.jar 2.登录方式有密码登录,和密匙登录 代码: 主函数: import java.util.Properties; import com.cloudp ...
随机推荐
- CSS3 文本溢出问题
一.单行: 效果: 实现这各效果必须要加上: text-overflow: ellipsis; /*文本溢出*/ overflow: hidden; /*配合使用:溢出隐藏*/ white-space ...
- 阿里云服务主机部署Thinkphp系统错误解决方案
最近在阿里云上购买了虚拟主机,于是有了把自己的网站挂在云上的冲动,那就行动呗.本来想的很简单,以为在修改数据库配置之后,将文件打包上传,然后就可以了,可在实际操作过程中,出现了很多问题,找了很多资料, ...
- vue嵌套路由-query传递参数(三)
在嵌套路由中我们经常会遇到父路由向子路由里面传递参数,传递参数有两种方法,通过 query 或者 params index.html <div id="app"> &l ...
- oracle12c之三 控制PDB中CPU 资源使用
CPU资源隔离 数据库中,不同的PDB对主机CPU资源使用要求不同,那么我们就可以使用CDB resourceplans来管理不同pdb对CPU资源的使用. CDB Resource Plans ...
- redis cluster 部署过程
一, 特点 高性能: 1.在多分片节点中,将16384个槽位,均匀分布到多个分片节点中 2.存数据时,将key做crc16(key),然后和16384进行取模,得出槽位值(0-16383之间) 3.根 ...
- IOS Intro - Write file
#import <sys/xattr.h> + (NSString *)getFullFilePathInDocuments:(NSString *)subFilePath fileNam ...
- day2-模块初识之路径问题
sys需要调用my_test,但是不在同一目录 会出现如下错误 具体办法:1.将my_test.py放到文件夹下 附:sys.py 和my-test.py具体代码 enumerate 重点:浅复制(用 ...
- 使用group by rollup和group by cube后的辅助函数
本文主要介绍,报表在使用group by rollup和group by cube后的辅助函数. CREATE TABLE TEST8 ( "ID" NUMBER, "O ...
- An internal error occurred during: "Initializing Java Tooling". Eclipse启动发生的错误
An internal error occurred during: “Initializing Java Tooling” 错误经常是莫名其妙的出现这种总错误,解决办法: 1.eclipse -&g ...
- 自己用的opensuse源
utsc_oss http://mirrors.ustc.edu.cn/opensuse/distribution/13.1/repo/oss/utsc_non_oss ...