需求描述:
客户出完账之后需要把出账的数据以文本文件的方式传送给收入管理系统,客户以前是通过本地的一个工具软件上传的,由于安全监管的原因,不允许在本地使用工具上传,因此客户希望我们在已经上线使用的系统开发一个功能实现他们的需求。
业务梳理:
我梳理一下具体的细节,具体的流程如图所示:
程序实现:
一、首先是设计页面,由于是在原系统的基础上新增功能,需要提前做好菜单的配置工作。我设计的页面如下图,一个是下拉选择框(用户选择相对应的业务),一个是选择文件,一个是月份(表示需要传送的文件是哪个月),一个是上传按钮,用户选择文件之后选择月份点击上传按钮之后即可触发上传操作。
以下是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 name="simpleQuery">
<table cellspacing="1" border="0">
<title><s:text name="erp接口上传小程序" /></title>
<s:hidden name="fileName"></s:hidden>
<tr><td>业务类型
<select id="" name="OperationType" class="formselect">
<option></option>
<option value="1">集团预出账</option>
<option value="2">集团正式出账</option>
</select>
</td>
<td>接口月份:
<as:datepicker id="startDate" name="rpmonth" readonly="false" disabled="false"
formatFlag="date6" showDefault="true" cssClass="required validate-datetime"> </as:datepicker>
</td>
</tr>
<tr><td width="10%">选择文件
<s:file id="upload" name="upload"></s:file>
</td>
<td >
</td>
<td >
<input id="impbut" type="button" value="上传" onclick="importHandle()" class="button" />
</td>
</tr>
</table>
</page:applyDecorator>
</s:form>
<script type="text/java script">
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 id="impbut" type="button" value="上传" onclick="importHandle()" class="button" />
系统是由struts2实现的,因此要在配置中加入这一段请求相对应的action的配置
<!-- erp接口文件上传 -->
<action name="interfaceupload_UPLOAD_in