Java实现上传文件到指定服务器指定目录(ChannelSftp实现文件上传下载)
package com.tianyang.task.utils; import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties; import ch.ethz.ssh2.Connection; import com.jcraft.jsch.*;
import com.tianyang.biz.constants.TYEnumConstants;
import com.tianyang.task.constants.TYTaskConstants;
import org.apache.log4j.Logger; public class SftpClientUtil {
protected static Logger logger = Logger.getLogger(SftpClientUtil.class); /** 主机 */
private final static String host = TYTaskConstants.tyTaskConfig.getACQUISITION_SYSTEM_SFTP();
/** 端口 */
private final static int port = Integer.valueOf(TYTaskConstants.tyTaskConfig.getACQUISITION_SYSTEM_SFTP_PORT());
/** 用户名 */
private final static String username = TYTaskConstants.tyTaskConfig.getACQUISITION_SYSTEM_USERNAME();
/** 密码 */
private final static String password = TYTaskConstants.tyTaskConfig.getACQUISITION_SYSTEM_PASSWORD();
/** 目录 */
private final static String directory = TYTaskConstants.tyTaskConfig.getACQUISITION_SYSTEM_DIRECTORY();
/** url地址 */
private final static String baseUrl = TYTaskConstants.tyTaskConfig.getACQUISITION_SYSTEM_BASEURL(); /**
* 上传单个文件
* @param remoteFolder
* 上传到SFTP服务器的路径
* @param sourceFile
* 上传的文件地址
* @param remoteFileName
* 上传到SFTP服务器后的文件名
*
* @throws Exception
*/
public static String uploadFile(String remoteFolder,String sourceFile, String remoteFileName) throws Exception {
long start = System.currentTimeMillis();
remoteFolder = directory + remoteFolder; File file = new File(sourceFile);
InputStream fileStream = new FileInputStream(file); // 提升作用域
ChannelSftp sftp = connect();
try{
//如果文件夹不存在,则创建文件夹
if(sftp.ls(remoteFolder) == null){
sftp.mkdir(remoteFolder);
}
//切换到指定文件夹
sftp.cd(remoteFolder);
}catch (SftpException e){
//创建不存在的文件夹,并切换到文件夹
sftp.mkdir(remoteFolder);
sftp.cd(remoteFolder);
}
sftp.put(fileStream, remoteFileName);
disconnect(sftp);
logger.info("文件上传成功!! 耗时:{"+(System.currentTimeMillis() - start)+"}ms");
return baseUrl + remoteFileName;
} /**
* 删除文件
* @param deleteFile
* 要删除的文件
*
* @throws Exception
*/
public void delete(String deleteFile) throws Exception {
ChannelSftp sftp = connect();
sftp.cd(directory);
sftp.rm(deleteFile);
disconnect(sftp);
} /**
* 连接sftp服务器
*
* @throws Exception
*/
public static ChannelSftp connect() throws Exception {
JSch jsch = new JSch();
try{
//采用指定的端口连接服务器
Session session = jsch.getSession(username,host,port);
if(password != null){
//设置登陆主机的密码
session.setPassword(password);
} Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
session.setConfig(sshConfig);
session.connect(); //创建sftp通信通道
Channel channel = session.openChannel("sftp");
channel.connect();
logger.info("sftp server connect success !!");
return (ChannelSftp) channel;
}catch (JSchException e){
logger.error("SFTP服务器连接异常!!", e);
throw new Exception("SFTP服务器连接异常!!",e);
}
} /**
* Disconnect with server
*
* @throws Exception
*/
public static void disconnect(ChannelSftp sftp) throws Exception {
if (sftp != null) {
if (sftp.isConnected()) {
sftp.disconnect();
} else if (sftp.isClosed()) {
}
}
} public static void main(String[] args){
//数据文件名
String dataFileName = "008_ZQQK_U_20200707_I.txt";
String dyw_key1 = "/Users/lpl/Documents/myself/tempfile/008_ZQQK_U_20181108_I.txt";
String resultDto1 = null;
try { resultDto1 = new SftpClientUtil().uploadFile("20181108", dyw_key1, dataFileName);
} catch (Exception e) {
e.printStackTrace();
}
// if(resultDto1 != null && resultDto1.getCode().equals("0000")) {
System.out.println("--上送ZQQK文件-----成功, 文件key = " + resultDto1);
// }else{
// System.out.println("--上送ZQQK文件-----失败, 文件key = " + resultDto1.getMessage());
// }
} }
Java实现上传文件到指定服务器指定目录(ChannelSftp实现文件上传下载)的更多相关文章
- windows上python上传下载文件到linux服务器指定路径【转】
从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...
- Java实现上传文件到指定服务器指定目录
前言需求 使用freemarker生成的静态文件,统一存储在某个服务器上.本来一开始打算使用ftp实现的,奈何老连接不上,改用jsch.毕竟有现成的就很舒服,在此介绍给大家. 具体实现 引入的pom ...
- summernote图片上传功能保存到服务器指定文件夹+php代码+java方法
1.summernote富文本编辑器 summernote是一款基于bootstrap的富文本编辑器,是一款十分好用的文本编辑器,还附带有图片和文件上传功能. 那么在我们网站中想吧这个图片上传到服务器 ...
- PEM文件和private.key文件生成IIS服务器所需的pfx文件(配置SSL用)
第一步:输入域名,点击"创建免费的SSL证书"按钮,如图 第二步:输入邮箱,点击创建,如图 创建成功后,需要进行dns验证,结果图如下: 第三步:在域名所在的云服务器上,添加域名解 ...
- cmake指定程序输出目录和库文件输出目录和拷贝文件
概述 本文样式环境: win10+cmake 3.18 本文将介绍使用CMAKE配置项目输出目录和 LIbrary项目的输出目录 本文将介绍 cmake的file函数的基础用法之拷贝文件 重点, 这些 ...
- 用java 代码下载Samba服务器上的文件到本地目录以及上传本地文件到Samba服务器
引入: 在我们昨天架设好了Samba服务器上并且创建了一个 Samba 账户后,我们就迫不及待的想用JAVA去操作Samba服务器了,我们找到了一个框架叫 jcifs,可以高效的完成我们工作. 实践: ...
- Javaweb向服务器上传文件以及从服务器下载文件的方法
先导入jar包 点击下载 commons-fileupload是Apache开发的一款专门用来处理上传的工具,它的作用就是可以从request对象中解析出,用户发送的请求参数和上传文件的流. comm ...
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小
本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类似Windows如下功能: 模块介绍: from ftplib import F ...
- Linux服务器之间免密同步文件、重启R服务
机器:ML-01/ML-02/ML-03 需求: 1.在ML-01上自动将文件同步至ML-02/ML-03 2.在ML-01上通过脚本重启ML-02/ML-03上的R服务 说明:以下示例中,ML-02 ...
随机推荐
- 03 . Prometheus监控容器和HTTP探针应用
Eeporter是什么及来源? 是什么? 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter.而Exporter的一个实例称为target,如下所示,Prom ...
- @atcoder - AGC029F@ Construction of a tree
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 N - 1 个 {1, 2, ..., N} 的子集,第 ...
- pip环境变量配置
找到python安装目录,进入C:\Users\EDZ\AppData\Local\Programs\Python\Python37-32\Scripts 下.添加此地址到path中 打开cmd 输 ...
- Android开发学习笔记Intent 一
Inten的概念 1.Intent是Android四大组件直接沟通的桥梁 2.Intent是一种运行时绑定(runtime binding)机制 Intent对象的属性 Itent的种类 Inten过 ...
- < react router>: (路由)
< react router> (路由): 思维导图: Atrial 文件夹下的index.js 文件内容: import React, { Component } from 'rea ...
- vue通过属性绑定为元素绑定style行内样式
1.直接在元素上通过:style绑定书写 <h1 :style="{color: 'red','font-size': '40px'}">这是一 ...
- yum 安装JDK
系统:CentOS 7 查看当前系统是否已安装JDK yum list installed |grep java 如果没有就选择yum库中的包进行安装,查看yum库中JDK列表 yum -y list ...
- jni 字符串的梳理
1.实现的功能是java层传递一个字符串到c层2.c层首先将jstring类型转换成char*类型3.c层对字符串进行处理之后,将处理之后的char*类型转换成jstring类型返回给上层的 pack ...
- SpringMVC 学习笔记(六)拦截器
5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. ...
- 尚学堂 213_尚学堂_高淇_java300集最全视频教程_反射机制_提高反射效率_操作泛型_操作注解_合并文件.mp4
在反射的时候如果去掉了安全性检测机制,能够大大的提高反射的执行效率,我们来看下面的代码进行比较 package com.bjsxt.test; import java.lang.reflect.Met ...