struts2上传word文件并保存到服务器上

来源:互联网 发布:nginx tomcat 编辑:程序博客网 时间:2024/06/05 03:15

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',//// fileUploadServletwidth : '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> 


3.action

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 blocke.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 blocke.printStackTrace();sendMsg2Client(Constants.JSON_FAILURE);}}sendMsg2Client(Constants.JSON_SUCCESS);return null;}}






0 0
原创粉丝点击