package com.ecc.liana.innermanage.file; import java.io.File; import java.io.FileInputStream; import org.apache.log4j.Logger; import com.ecc.emp.core.Context; import com.ecc.emp.core.EMPException; import com.ecc.liana.base.LianaAction; import com.ecc.liana.base.LianaConstants; import com.ecc.liana.base.LianaStandard; import com.ecc.liana.exception.TranFailException; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; /** * 将文件通过SFTP方式上传到FTP服务器的Action<br> * * @version 1.0 2013-05-03 * @author wangxx@yuchengtech.com */ public class SftpUploadAction extends LianaAction { Session session = null; Channel channel = null; /** * FTP 数据传输超时时间 */ private int timeout = 0; /** * 保存本地文件名称 */ private String localFileNameField; private static final Logger LOG = Logger.getLogger(SftpUploadAction.class.getName()); @Override public String execute(Context context) throws EMPException { // TODO Auto-generated method stub ChannelSftp sftp = null; try{ String fileName = (String)context.getDataValue(localFileNameField); String localPath = LianaStandard.getSelfDefineSettingsValue("localFilePath"); String remotepath = LianaStandard.getSelfDefineSettingsValue("remoteFilePath"); String sftpHost = LianaStandard.getSelfDefineSettingsValue("SftpHost"); String port = LianaStandard.getSelfDefineSettingsValue("SftpPort"); String sftpUserName = LianaStandard.getSelfDefineSettingsValue("SftpUserName"); String sftpPassword = LianaStandard.getSelfDefineSettingsValue("SftpPassword"); String sftpTimeout = LianaStandard.getSelfDefineSettingsValue("SftpTimeout"); if (sftpTimeout != null && !sftpTimeout.equals("")) { timeout = Integer.valueOf(sftpTimeout); } int sftpPort = 22; if (port != null && !port.equals("")) { sftpPort = Integer.valueOf(port); } JSch jsch = new JSch(); // 创建JSch对象 session = jsch.getSession(sftpUserName, sftpHost, sftpPort); // 根据用户名,主机ip,端口获取一个Session对象 LOG.debug("Session created."); if (sftpPassword != null) { session.setPassword(sftpPassword); // 设置密码 } java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.setTimeout(timeout); // 设置timeout时间 session.connect(); // 通过Session建立链接 LOG.debug("Session connected."); LOG.debug("Opening Channel."); channel = session.openChannel("sftp"); // 打开SFTP通道 channel.connect(); // 建立SFTP通道的连接 sftp = (ChannelSftp) channel; LOG.debug("Connected successfully to ftpHost = " + sftpHost + ",as ftpUserName = " + sftpUserName + ", returning: " + channel); LOG.debug("开始上传图片文件-->>"+fileName); uploadBySftp(remotepath,localPath+fileName,sftp); LOG.debug(fileName+" 上传成功......"); }catch(JSchException sex){ LOG.error("SftpUploadAction.execute() 文件上传...上传失败:"+sex.getMessage()); // context.setDataValue("errorCode", "EBIM1801"); throw new TranFailException( "EBIM1801","文件上传失败"); }catch(Exception e){ LOG.error("SftpUploadAction.execute() 文件上传...执行失败:"+e.getMessage()); // context.setDataValue("errorCode", "EBIM1802"); throw new TranFailException( "EBIM1802","文件上传执行失败"); }finally{ releaseResource( session , channel ); } return DEFAULT_RETURN_VALUE; } /** * 上传文件 * @param directory 上传的目录 * @param uploadFile 要上传的文件 * @param sftp */ public void uploadBySftp(String directory, String uploadFile, ChannelSftp sftp) { try { sftp.cd(directory); File file=new File(uploadFile); sftp.put(new FileInputStream(file), file.getName()); } catch (Exception e) { e.printStackTrace(); } } /** * @desc 释放资源 * @param session * @param channel */ protected void releaseResource(Session session,Channel channel) { if (channel != null) { channel.disconnect(); LOG.debug("channel released..."); } if (session != null) { session.disconnect(); LOG.debug("session realsed..."); } } public void setLocalFileNameField(String localFileNameField) { this.localFileNameField = localFileNameField; } }
相关推荐
SecureCRT 是高度可定制的终端仿真器,适用于 Internet 和... 文件传输工具:<br><br> VCP 和 VSFTP 命令行公用程序让使用 SFTP 的文件传输更安全。<br><br> . 脚本支持:<br><br> 支持 VBScript 和 JScript 脚本语言。
sftp 命令可以通过 ssh 来上传和下载文件,是常用的文件传输工具,它的使用方式与 ftp 类似,但它使用 ssh 作为底层传输协议,所以安全性比 ftp 要好得多。 常用方式 格式:sftp <host> 通过 sftp 连接 <host>,...
This is a patch file to fix the bugs of EditPlus v2.31<br><br>Copyright © 1998-2007 ES-Computing<br>Contact: support@editplus.com<br>Homepage: http://www.editplus.com/<br><br>INSTALLATION<br>========...
本篇文章将深入探讨如何使用univocity-parsers库来创建CSV文件,以及如何利用JSCH库将生成的CSV文件上传到SFTP(Secure File Transfer Protocol)服务器。 首先,让我们了解univocity-parsers库。这是一个强大的...
- `sftp -oPort=<port> <user>@<host>`:连接到主机`<host>`,使用指定用户`<user>`和端口`<port>`。 2. **操作命令**: - `help` 或 `/`:显示帮助信息。 - `pwd`:查看远程服务器的当前工作目录。 - `lpwd`:...
### Windows脚本SFTP上传文件至备份服务器方案 #### 概述 在当前的信息安全环境中,数据备份成为了保障业务连续性和数据安全的重要手段之一。传统的FTP传输方式由于其明文的身份验证机制,已经不能满足支付行业的...
本篇文章将深入探讨如何使用Java实现CSV文件的生成,并将其通过SFTP(Secure File Transfer Protocol)协议上传到指定服务器。 首先,我们要介绍的是用于生成CSV文件的库:univocity-parsers。这是一个高效、灵活且...
在本文中,我们将介绍如何使用 Spring Boot 实现 FTP 上传文件到远程服务器的流程。这个流程包括如何使用 JWT 登录认证及鉴权的流程,以及如何使用 Spring Security 实现动态数据验证及权限分配。 一、环境准备工作...
本教程将深入探讨如何使用前端插件实现文件上传到FTP(File Transfer Protocol)服务器的过程,这是一个广泛用于文件传输的标准协议。我们将讨论关键概念、步骤以及可能涉及的技术。 ### FTP简介 FTP是一种在...
本篇文章将详细探讨如何使用Java通过SFTP模式实现FTP的文件上传、下载和删除功能。 一、SFTP简介 SFTP与传统的FTP不同,FTP在明文传输数据,存在安全隐患,而SFTP则利用SSH提供的加密机制,确保数据在传输过程中的...
之前做的FTP读取服务器上文件,后来为了安全,将ftp方式改成了SFTP。 我现在是,要读取服务器文件是按时在某个文件夹中存放最新的文件,我这里设定时间,每隔5分钟读取一次。 在服务器上通过SFTP方式,跨区读取另一...
FTP服务器是一种用于在互联网上进行文件传输的服务,它允许用户从一台计算机(客户端)向另一台计算机(服务器)上传或下载文件。FTP(File Transfer Protocol)是这项服务的基础协议,它是一个标准网络协议,用于在...
- `get <远程文件路径> <本地文件路径>`:从远程服务器下载文件到本地。 - `rm <远程文件路径>`:删除远程服务器上的文件。 - `-hostkey=*`:自动接受未知的主机密钥,用于解决首次连接时的确认问题。 #### 三、...
JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。
【标题】"SFTP定时扫描本地文件上传到Linux服务器"涉及的关键知识点主要集中在SFTP(Secure File Transfer Protocol)协议的使用、文件系统的监控以及自动化任务的执行。SFTP是一种安全的网络协议,用于在不同主机...
FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器上的数据。以下是一份详细的Java FTP文件读取教程,涵盖了相关的重要知识点。 1. **FTP库的选择**: Java标准库中并没有内置...
这里我们详细探讨一下"FTP,SFTP文件上传,下载到服务器,ZIP文件压缩,加密,解密,然后再上传到服务器"这一主题。 首先,FTP(File Transfer Protocol)是一种标准网络协议,用于在Internet上进行文件传输。它允许...
总结起来,这个示例展示了如何利用Kettle完成一个完整的数据处理流程:从FTP服务器下载文件,使用转换进行数据预处理,然后通过PostgreSQL JDBC驱动将处理后的数据加载到PostgreSQL数据库中。这个过程对于需要定期从...
Java SFTP文件上传是通过Java编程语言实现与Secure File Transfer Protocol(SFTP)服务器进行交互,将本地文件安全地传输到远程服务器的过程。SFTP是一种基于SSH的安全文件传输协议,它提供了在不安全网络上安全...