jsp多附件上传



 点击(+)新增一个文件框,(-)删除一个文件框。

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

}

 --摘自 困难生申请前台

猜你喜欢

转载自563432906.iteye.com/blog/2322951