点击(+)新增一个文件框,(-)删除一个文件框。
<form name="form1" method="post" action="${pageContext.request.contextPath}/knsservlet" enctype="multipart/form-data" onsubmit="return onVail(this);"> <table class="tableCont" id="table"> <tr> <th>上传附件:</th> <td colspan="3"> <input type="file" name="file"/> <img src="${pageContext.request.contextPath}/images/plus.jpg" id="addImg" width="20" height="20"/> </td> </tr> </table>
$(document).ready(function () { var maxInputs = 4;//最多新增4个input,一共最多5个 var tableId = $("#table"); var addButton = $("#addImg"); var x = tableId.length; $(addButton).click(function (e) { var fjs = document.getElementsByName("file"); var size = 0; for(var i = 0;i < fjs.length; i++) { if(fjs[i].files.length > 0){ size += fjs[i].files[0].size; } } if(size > 20480000){ alert("附件总大小已超出20M,不可再添加"); return false; } if (x <= maxInputs) { var content = "<tr><th></th><td>"; content += "<input type='file' name='file'/>"; content += "<img src='${pageContext.request.contextPath}/images/minus.jpg' class='removeclass' width='20' height='20'/>"; content += "</td></tr>"; $("#table").append(content); x++; } else { alert("最多只能上传五个附件"); } return false; }); //删除当前行<tr> $("body").on("click", ".removeclass", function (e) { if (x > 1) { $(this).parent().parent().remove(); x--; } return false; }); });
package com.caac.servlet; import com.caac.bean.DcwjSubmitYhxxBean; import com.caac.bean.FjBean; import com.caac.bean.SqbBean; import com.caac.dcwjutils.KnssqBean; import com.google.gson.Gson; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.servlet.ServletFileUpload; @WebServlet(name = "KnsServlet", urlPatterns = { "/knsservlet" }) public class KnsServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=UTF-8"; public void init(ServletConfig config) throws ServletException { super.init(config); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); request.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); SqbBean bean = this.InputStreamTOBean(request); //获取页面form表单数据以及上传附件 KnssqBean kns = new KnssqBean(); kns.saveData(bean); out.print("<script language=javascript charset=\"utf-8\">alert('提交成功');window.close();</script>"); out.close(); } /** * 获取页面form表单数据以及上传附件 * */ private SqbBean InputStreamTOBean(HttpServletRequest request){ List<FjBean> fjList = new ArrayList<FjBean>(); //附件Bean SqbBean bean = new SqbBean(); KnssqBean kns = new KnssqBean(); //把上传在服务器上的路劲转保存到固定文件夹中; //因为当服务器关闭或停止时,存放在服务器上的文件会丢失 String xtglPath = kns.findFilePath(); //xtgl_xtsz(系统设置表)中保存的文件夹路径 String savePath = xtglPath + File.separator + "KNS_SQ"; //上传附件保存的路径 File saveDir = new File(savePath); // 如果目录不存在,就创建目录 if (!saveDir.exists()) { saveDir.mkdir(); } // 创建文件上传核心类 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload sfu = new ServletFileUpload(factory); //设置编码 sfu.setHeaderEncoding("UTF-8"); // 设置上传的单个文件的最大字节数为20M sfu.setFileSizeMax(1024 * 1024 * 20); //设置整个表单的最大字节数为50M sfu.setSizeMax(1024 * 1024 * 50); try { // 处理表单请求 List<FileItem> itemList = sfu.parseRequest(request); for (FileItem fileItem : itemList) { // 对应表单中的控件的name String fieldName = fileItem.getFieldName(); // 如果是普通表单控件 if (fileItem.isFormField()) { String value = fileItem.getString().trim(); //重新编码,解决乱码 value = new String(value.getBytes("ISO-8859-1"), "UTF-8"); if ("xm".equals(fieldName)) { bean.setXm(value); } if ("sfzh".equals(fieldName)) { bean.setSfzh(value); } if ("jtrjnsr".equals(fieldName)) { bean.setJtrjnsr(value); } if ("knslx".equals(fieldName)) { bean.setKnslx(value); } if ("sqyy".equals(fieldName)) { bean.setSqyy(value); } } else { // 获得文件大小 Long size = fileItem.getSize(); if (size > 0) { //表示存在附件 FjBean fjBean = new FjBean(); fjBean.setExitFj(true); //存在附件 // 获得文件名 String itemName = fileItem.getName(); //上传的文件加入时间戳 int lastD = itemName.lastIndexOf("."); String oldName = itemName.substring(0, lastD); //旧的附件名 String fileLx = itemName.substring(lastD + 1); //附件类型 String curTime = new SimpleDateFormat("HHmmss").format(new Date()) + ""; //文件名格式:时间戳.后缀名 String fileName = oldName + "_" + curTime + "." + fileLx; //新的附件名 fjBean.setFjmc(itemName); //附件名称 fjBean.setFjlx(fileLx); //附件类型 fjBean.setWjdx(size.intValue()); //文件大小 fjBean.setFjpath(File.separator + "KNS_SQ" + File.separator + fileName); //附件路径 //将文件保存到指定的路径 File file = new File(savePath, fileName); fileItem.write(file); //保存附件到服务器 fjBean.setUploadFile(file); //上传的附件 fjList.add(fjBean); } } } } catch (UnsupportedEncodingException uee) { uee.printStackTrace(); } catch (FileUploadException fue) { fue.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } bean.setSqrq(new SimpleDateFormat("yyyy-MM-dd").format(new Date())); bean.setXnzj(kns.getDqxn("Xnzj")); bean.setFl(1); //自己申请 bean.setJtdf(kns.getJtdf(bean.getSfzh())); bean.setXh(kns.getXh(bean.getSfzh())); bean.setSfcx(0); //默认0为没有撤销 bean.setSftj("1"); //默认1为提交啦的数据 bean.setZzpdknslx(bean.getKnslx()); //默认为申请时的贫困生类型 bean.setFjList(fjList); return bean; } }
--摘自 困难生申请前台