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

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> 


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 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;
	}
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值