点击(+)新增一个文件框,(-)删除一个文件框。
<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;
}
}
--摘自 困难生申请前台