Java实现对文本文件MD5加密并ftp传送到远程主机目

客户出完账之后需要把出账的数据以文本文件的方式传送给收入管理系统,客户以前是通过本地的一个工具软件上传的,由于安全监管的原因,不允许在本地使用工具上传,因此客户希望我们在已经上线使用的系统开发一个功能实现他们的需求。

业务梳理:

我梳理一下具体的细节,具体的流程如图所示:

程序实现:

一、首先是设计页面,由于是在原系统的基础上新增功能,需要提前做好菜单的配置工作。我设计的页面如下图,一个是下拉选择框(用户选择相对应的业务),一个是选择文件,一个是月份(表示需要传送的文件是哪个月),一个是上传按钮,用户选择文件之后选择月份点击上传按钮之后即可触发上传操作。

以下是JSP界面的源码:
<%@ include file="/common/taglibs.jsp"%>
<%@ page language="Java" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false"%>
<s:form  enctype="multipart/form-data" method="post" onsubmit="return valid();">
<page:applyDecorator>
<table cellspacing="1">
<title><s:text /></title>
<s:hidden></s:hidden> 
<tr><td>业务类型
    <select>
    <option></option>
    <option value="1">集团预出账</option>
    <option value="2">集团正式出账</option>
    </select>
</td>
<td>接口月份:
<as:datepicker readonly="false" disabled="false"
formatFlag="date6" showDefault="true" cssClass="required validate-datetime">    </as:datepicker>
</td>     
</tr>
<tr><td>选择文件
<s:file></s:file>
</td>
<td >
&nbsp;
</td>
<td >
<input type="button" value="上传" />
</td>                                             
</tr>
</table>
</page:applyDecorator>   
</s:form> 
<script type="text/javascript">
function importHandle() {
var fileName = $('upload').value; 
if (fileName == null || fileName == undefined || fileName == "") {
    validation.userDefined("请选择要上传的文件");
    return;
    }
    fileName = fileName.split(".");
if (fileName[fileName.length - 1] == "txt" || fileName[fileName.length - 1] == "TXT") {
    document.forms[0].action = "interfaceupload_UPLOAD_interfaceupload.do";
    document.forms[0].submit();
    } else {
    validation.userDefined("文件格式错误,您上传的格式不被允许");
    return;
    }
}
</script>

二、点击上传按钮之后的函数为:importHandle(),提交的请求为interfaceupload_UPLOAD_interfaceupload.do
<input type="button" value="上传" />

系统是由struts2实现的,因此要在配置中加入这一段请求相对应的action的配置
<!-- erp接口文件上传 -->
<action
class="aicu.application.mps.voice.international.web.revenue.FileImportAction">
<result>/WEB-INF/jsp/revenue/interfaceupload.jsp</result>
<param>interfaceupload</param>
</action> 

三、做好了相对应的准备工作,继续来写接下来的业务逻辑。

编写aicu.application.mps.voice.international.web.revenue.FileImportAction类
package aicu.application.mps.voice.international.web.revenue;     
import aicu.application.mps.voice.international.web.revenue.FileUploadAction;
public class FileImportAction extends FileUploadAction {   
    public String execute() throws Exception {
        System.out.println("hello");
        smartUpload();
        return SUCCESS;
    }
}

由于FileImportAction继承了FileUploadAction,所以相对应的请求都会由>FileUploadAction的execute()来处理。

首先是获取上传上来的文件对象,通过声明上传文件的对象,内容类型,文件名,服务ID,然后在生成set()方法和get()方法便能获取到文件对象。
protected File upload;// 实际上传文件
protected String uploadContentType; // 文件的内容类型
protected String uploadFileName; // 上传文件名
protected String uploadServiceId;//上传服务ID

public File getUpload() {
    return upload;
    }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3a19bf98f2872e488ebe40cb9e58ef75.html