struts2做上传多个文件
来源:互联网 发布:海智网聚网络 编辑:程序博客网 时间:2024/06/06 19:55
package com.zdfd.elec.action.upload;
import java.io.File;
import java.io.PrintWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.abin.core.service.GenericService;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.Preparable;
import com.zdfd.elec.action.BaseAction;
import com.zdfd.elec.upload.UploadFile;
import com.zdfd.elec.upload.UploadManager;
@InterceptorRefs(value = { @InterceptorRef("myFileUploadStack")})
@Result(name="download",location="/download/download.jsp")
@SuppressWarnings("unchecked")
public class UploadAction extends BaseAction implements Preparable {
private static final long serialVersionUID = 1L;
private UploadManager uploadManager;
private GenericService genericService;
private int newGroupId;
private File[] upload;
private String[] uploadFileName;
String groupId = null;
public UploadManager getUploadManager() {
return uploadManager;
}
public void setUploadManager(UploadManager uploadManager) {
this.uploadManager = uploadManager;
}
/**
* 上传文件
* @return
* @throws Exception
*/
public String doUpload() throws Exception {
String groupId = ServletActionContext.getRequest().getParameter("id");
String flag = groupId;
try {
if (upload != null) {
for (int i = 0; i < upload.length; i++) {
File file = uploadManager.uploadFile(upload[i],uploadFileName[i]);
UploadFile uploadFile = new UploadFile();
uploadFile.setFileName(file.getName());
uploadFile.setRealName(uploadFileName[i]);
uploadFile.setSavePath(file.getAbsolutePath());
uploadFile.setUploadTime(new Date());
if ("".equals(groupId) || groupId==null) {
groupId = newGroupId + "";
}
uploadFile.setGroupId(Integer.valueOf(groupId));
String extName = getExt(uploadFileName[i]);
if (extName!=null && !"".equalsIgnoreCase(extName)) {
if (".doc".equalsIgnoreCase(extName)) {
uploadFile.setIcon("/images/doc.gif");
} else if(".txt".equalsIgnoreCase(extName)) {
uploadFile.setIcon("/images/txt.gif");
} else if(".rar".equalsIgnoreCase(extName) || ".zip".equalsIgnoreCase(extName)) {
uploadFile.setIcon("/images/rar.gif");
} else if(".ppt".equalsIgnoreCase(extName)) {
uploadFile.setIcon("/images/ppt.gif");
} else if(".pdf".equalsIgnoreCase(extName)) {
uploadFile.setIcon("/images/pdf.gif");
} else if(".xls".equalsIgnoreCase(extName)) {
uploadFile.setIcon("/images/excel.bmp");
} else if(".jpg".equalsIgnoreCase(extName) || ".jpeg".equalsIgnoreCase(extName)) {
uploadFile.setIcon("/images/jpg.jpg");
} else {
uploadFile.setIcon("/images/file.gif");
}
}
insertDB(uploadFile);
}
ServletActionContext.getResponse().setContentType("text/html; charset=UTF-8"); // 转码
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.flush();
out.println("<script>");
out.println("alert('上传成功!')");
out.println("</script>");
}
} catch (Exception e) {
e.printStackTrace();
return upload_fail();
}
if ("".equals(flag) || flag==null) {
return upload_ok();
} else {
String searchTemplate = "FROM UploadFile uploadFile WHERE 1=1 AND groupId=" + groupId;
Map<String,Object> map = new HashMap<String,Object>();
List<UploadFile> list = (List<UploadFile>) genericService.searchForList(searchTemplate, map);
ServletActionContext.getRequest().setAttribute("result", list);
ServletActionContext.getRequest().setAttribute("groupId", groupId);
return "download";
}
}
/**
* 取得文件扩展名
* @param str
* @return
*/
public String getExt(String str){ //获得文件的后缀名
String subStr=str.substring(str.lastIndexOf("."));
return subStr;
}
/**
* 上传成功 ,转到成功页面
*
* @return
*/
public String upload_ok() {
ServletActionContext.getRequest().setAttribute("newGroupId", newGroupId);
return "upload_ok";
}
/**
* 获得组ID
* @return
*/
private int getGroupId() {
String sql = "select max(groupId) from tbl_attrfile";
int result = genericService.queryForInt(sql, Integer.class);
result ++;
return result;
}
/**
* 添加到数据库
*
* @param file
*/
private void insertDB(UploadFile uploadFile) {
genericService.saveOrUpdate(uploadFile);
}
/**
* 上传失败,转到错误页面
*
* @return
*/
public String upload_fail() {
return "upload_fail";
}
@Override
public String execute() throws Exception {
/* groupId = ServletActionContext.getRequest().getParameter("id");
if ("".equals(groupId)) {
groupId = getGroupId() + "";
}*/
return SUCCESS;
}
public GenericService getGenericService() {
return genericService;
}
public void setGenericService(GenericService genericService) {
this.genericService = genericService;
}
@Override
public void prepare() throws Exception {
newGroupId = getGroupId();
}
public File[] getUpload() {
return upload;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.convention.action.mapAllMatches" value="true" />
<constant name="struts.convention.default.parent.package" value="struts-config" />
<constant name="struts.convention.action.packages" value="com.zdfd.elec.action" />
<constant name="struts.convention.result.path" value="/" />
<package name="struts-config" extends="struts-default" namespace="/">
<interceptors>
<interceptor name="exception" class="org.abin.core.struts.interceptor.ExceptionCatcherInterceptor" />
<interceptor name="preloading" class="org.abin.core.struts.interceptor.PreloadingInterceptor" />
<interceptor name="search" class="org.abin.core.struts.interceptor.SearchInterceptor" />
<interceptor name="searchCleanUp" class="org.abin.core.struts.interceptor.SearchCriteriaCleanupInterceptor" />
<interceptor name="myFileUpload" class="org.abin.core.struts.interceptor.MyFileUploadInterceptor" />
<interceptor-stack name="elecSecDefaultWebStack">
<interceptor-ref name="exception" />
<interceptor-ref name="autowiring" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="i18n" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="chain" />
<interceptor-ref name="searchCleanUp" />
<interceptor-ref name="search" />
<interceptor-ref name="preloading" />
<interceptor-ref name="params">
<param name="excludeParams">(eq|neq|gt|lt|geq|leq|like|in|orderby|groupby)/./D*</param>
</interceptor-ref>
<interceptor-ref name="conversionError" />
</interceptor-stack>
<interceptor-stack name="myFileUploadStack">
<interceptor-ref name="exception" />
<interceptor-ref name="myFileUpload">
<param name="maximumSize">1048576</param>
</interceptor-ref>
<interceptor-ref name="autowiring" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="i18n" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="chain" />
<interceptor-ref name="searchCleanUp" />
<interceptor-ref name="search" />
<interceptor-ref name="preloading" />
<interceptor-ref name="params">
<param name="excludeParams">(eq|neq|gt|lt|geq|leq|like|in|orderby|groupby)/./D*</param>
</interceptor-ref>
<interceptor-ref name="conversionError" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="elecSecDefaultWebStack" />
<global-results>
<result name="no_permission" type="redirect">/NoPermission.jsp</result>
<result name="system_error">/SystemError.jsp</result>
<result name="database_error">/SystemError.jsp</result>
<result name="system_message">/SystemMessage.jsp</result>
</global-results>
</package>
</struts>
jsp页面:
<html>
<head>
<%@include file="/include/include.jsp" %>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传页面</title>
<link rel="stylesheet" type="text/css" href="table.css">
<link type="text/css" rel="stylesheet" href="/elecSec/css/a.css"/>
<link rel="stylesheet" type="text/css" href="${ctx }/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="${ctx }/themes/default/tree.css">
<link rel="stylesheet" type="text/css" href="${ctx }/themes/icon.css">
<link type="text/css" rel="StyleSheet" href="${ctx }/css/global.css">
<link rel="stylesheet" type="text/css" href="${ctx }/js/ext/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="${ctx }/js/extchage.css" />
<script type="text/javascript" src="${ctx }/js/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${ctx }/js/ext/ext-all.js"></script>
<script type="text/javascript" src="${ctx }/js/ext/apimenu.js"></script>
<script type="text/javascript" src="${ctx }/js/jquery/jquery-1.4.2.js"></script>
<script type="text/javascript" src="${ctx }/js/jquery/jquery.easyui.min.js"></script>
<script type="text/javascript">
/**
* 定义列表中按钮的现实方式
*/
Ext.onReady(function(){
Ext.findTags('div', 'menu', function(o){
Ext.initDropMenu(o, function(){
if(Ext.inClass(this.tp, 'self')) {
location.href=this.url;
} else{
var planid = this.pid;
if(Ext.inClass(this.tp, 'callback')){
parent.popWinOpen(this.url,'自查评',900,550,window,function (taskcontentuserid,score,level,question,zginfo,remark){
if(taskcontentuserid==null && score==null && level==null && question==null && zginfo==null && remark==null ){
return ;
} else {
window.location.href("${ctx}/fuchaping/fuchaping!saveZiChaPingDafen.action?taskcontentuserid="+taskcontentuserid+"&score="
+score+"&level="+level+"&question="+question+"&zginfo="+zginfo+"&remark="+remark);
alert("保存成功!");
}
} );
} else{
parent.popWinOpen(this.url, this.name,0,0,window);
}
}
});
});
});
//添加附件
var i = 0;
function addFile() {
if(i > 9) {
alert('已达到附件最大数');
return;
}
var tabObj = document.getElementsByTagName("table")[0];
var trObj = tabObj.insertRow();
var tdObj1 = trObj.insertCell();
var inputObj = document.createElement("input");
tdObj1.setAttribute("colspan","2");
inputObj.setAttribute("type", "file");
inputObj.setAttribute("name", "upload");
tdObj1.appendChild(inputObj);
//var tdObj2 = trObj.insertCell();
var imgObj = document.createElement("img");
imgObj.src = "${ctx}/images/del.gif";
imgObj.onclick = function(){
//删除图片所在的行
this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);
i--;
}
tdObj1.appendChild(imgObj);
i++;
}
//判断是否上传文件及文件类型是否合法
function isFile() {
var b = 0;
var uploads = document.getElementsByName( "upload" ) ;
var inputs = document.getElementsByTagName( "input" ) ;
for( var i = 0 ; i < inputs.length ; i++ ){
if(inputs[i].value!=null && inputs[i].value.length > 0) {
b = 1;
break;
}
}
if(b==0) {
alert('您没有选择要上传的文件');
return false;
}
for( var i = 0 ; i < inputs.length ; i++ ){
if(inputs[i].value!=null && inputs[i].value.length > 0) {
var fileFullPath = inputs[i].value;
var b = fileFullPath.indexOf(".bat");
var w = fileFullPath.indexOf(".exe");
if(b!=-1 || w!=-1) {
var myregex=new RegExp(".exe");//创建正则表达式
if(myregex.test(fileFullPath.substr(b)) || myregex.test(fileFullPath.substr(w))){//判断条件是否成立
alert("文件格式不合法");
return false;
}
}
}
}
return true;
}
</script>
</head>
<body>
<div class="content">
<div class="control">
<form action="${ctx }/upload/upload!doUpload.action" onsubmit="return isFile()" enctype="multipart/form-data" method="post" >
<table cellpadding="0" cellspacing="1" class="tb1" width="150">
<tr>
<th colspan="2">
请选择要上传的文件(*注意:不能上传.bat和.exe文件)
</th>
</tr>
<tr>
<td width="70%" colspan="2">
<button type="button" onclick="addFile()" class='bgbtn'>添加附件</button>
</td>
</tr>
<tr>
<td width="70%" colspan="2">
<input type="file" name="upload" />
</td>
</tr>
</table>
<button type="submit" class='bgbtn'>上传附件</button>
</form>
</div>
</div>
</body>
</html>
- struts2做上传多个文件
- Struts2多个文件上传
- Struts2多个文件上传
- struts2上传多个文件
- Struts2多个文件上传
- Struts2上传多个文件
- struts2多个文件上传
- Struts2多个文件上传
- struts2多个文件上传
- struts2 多个文件上传
- struts2 上传多个文件
- struts2多个文件上传
- Struts2教程:上传任意多个文件
- Struts2:上传任意多个文件
- struts2示例代码-多个文件上传
- Struts2 - 上传任意多个文件
- Struts2上传单个或多个文件
- struts2 单个文件上传 多个文件上传
- C#中如何把图片保存入SQL Server
- struts2提交表单时中文乱码
- Web开发人员应当知道的15个开源项目
- 创建并部署一个连接SQLAzure的WindowsAzure应用遇到的问题及解决办法
- AINT / Perlbox Voice /Mescribbler Community
- struts2做上传多个文件
- 学校老师的辞职报告范文
- Ocaml学习笔记 标识符和简单数据类型
- CVS 服务器安装
- (转)_beginthread还是CreateThread
- Unix编程常见问题解答
- OpenCV 中CvMat* 与CvMat
- 抢占问题背后的战略制高点
- pb12 开发 webservice 注意事项