1.前台js:
Ext.onReady(function() {
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
var file = new Ext.form.TextField({
fieldLabel : '其他要求',
name : 'file',
allowBlank : true,
msgTarget : 'under',
validator : function(value) {
if (value != "") {
var arr = value.split('.');
// doc,docx两种格式均可
if (arr[arr.length - 1] != 'doc'
&& arr[arr.length - 1] != 'docx') {
return '文件不合法,请上传word文件';
} else {
return true;
}
}else{
return true;
}
},
inputType : 'file'// 文件类型
});
var sure1 = new Ext.Button({
text : '确定',
handler : function() {
// 这里的作用是将radiogroup的值获取并传到隐藏域
if (form.getForm().isValid()) {
form.getForm().findField('activity.activityType')
.setValue(hdlx.getValue().inputValue);
// alert(form.getForm().findField('activity.activityType').getValue());
form.getForm().submit({
// waitTitle : '请稍后',
// waitMsg : '正在上传文档文件 ...',
success : function(form, response) {
Ext.getCmp('form').form.reset();
// 添加活动成功后,清除已填入的数据,防止多次提交
Ext.get("msg").dom.innerHTML = "成功";
},
failure : function() {
Ext.get("msg").dom.innerHTML = "失败,请与管理员联系";
}
});
}
}
});
var reset1 = new Ext.Button({
text : '重置',
handler : function() {
form.getForm().reset();
}
});
var form = new Ext.form.FormPanel({
renderTo : 'mainform',
frame : true,
id : 'form',
name : 'form',
url : '../sys_act/adminAction_act_addActivity',//
// fileUploadServlet
width : '100%',
html : '<div id="msg" class="tipmsg"></div>',
height : '100%',
fileUpload : true,
// radioGroup不能直接将值传给action所以我在这里添加了一个隐藏域来传值
items : [huodongname, duixiang, time1, time2, zysx, rsxz, hdlx,file,
{
xtype : 'hidden',
id : 'activity.activityType',
name : 'activity.activityType'
}],
buttons : [sure1, reset1]
});
var win = new Ext.Window({
title : '添加活动',
resizable : true,
width : '80%',
y: 2, //窗口的初始化Y坐标强制为2,以防窗口太大被标题遮盖
shadow : true,
modal : false,
maximizable : true,
closable : true,
items : form
});
win.show();
});
2.struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<span style="white-space:pre"> </span><package name="admin_act" namespace="/sys_act" extends="json-default">
<action name="adminAction_act_*" class="adminAction_act"
method="{1}">
<result type="json"></result>
</action>
</package>
</struts>
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.annotation.Resource;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.alibaba.fastjson.JSON;
@Controller("adminAction_act")
@Scope("prototype")
public class AdminAction extends BaseAction {
private AdminService adminService;
private String activityName;
private Activity activity;
private String testStr;
private String JSONActivities;
private String activityID;
// 上传文件的参数
private File file; // 具体上传文件的 引用 , 指向临时目录中的临时文件
private String fileFileName; // 上传文件的名字 ,FileName 固定的写法
private String fileContentType; // 上传文件的类型, ContentType 固定的写法
private static Logger logger = Logger.getLogger(AdminAction.class);
public String addActivity() {
logger.debug("!!!这里是客户端刚提交的activity信息!*******" + activity.toString());
if (fileFileName == null) {
try {
// activity.setTemplate("");
adminService.addActivity(activity);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
sendMsg2Client(Constants.JSON_FAILURE);
}
} else {
try {
// 获取文件存储路径
String path = ServletActionContext.getRequest().getRealPath(
"/sys_act/template");
// 定义时间戳
Date now = Calendar.getInstance().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmm");
// 对上传文件进行重命名,规则为act_tpl_+时间戳(当前时间的整型值)
String fileFileName2 = "act_tpl_" + sdf.format(now) + ".doc";
// 输出流
File file2 = new File(path, fileFileName2);
if (!file2.getParentFile().exists()) {
file2.mkdirs();
}
OutputStream os = new FileOutputStream(file2);
// 输入流
InputStream is = new FileInputStream(file);
byte[] buf = new byte[1024];
int length = 0;
while (-1 != (length = is.read(buf))) {
os.write(buf, 0, length);
}
is.close();
os.close();
activity.setTemplate(fileFileName2);
adminService.addActivity(activity);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
sendMsg2Client(Constants.JSON_FAILURE);
}
}
sendMsg2Client(Constants.JSON_SUCCESS);
return null;
}
}