在jsp页面上导入.xls文件,报错:
java.io.IOException: Posted content type isn't multipart/form-data
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)
at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)
at org.apache.jsp.dxt.sms.multi_005fsender.upload_jsp._jspService(upload_jsp.java:406)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at sdcncsi.ict.security.AclFilter.doFilter(AclFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at sdcncsi.ict.web.RequestFilter.doFilter(RequestFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
怎么回事啊,救命啊,先谢谢大家

解决方案 »

  1.   

    form表单里面加上加enctype="multipart/form-data" 这个属性
    不过表单请求传到另一个jsp或servlet 里时是不能用request.getParameter()来获取到各个表单元素的值的。
      

  2.   

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page session="false"%>
    <%@ include file="/common/taglibs.jsp"%>
    <%@ include file="/common/meta.jsp"%>
    <%@ include file="/common/js.jsp"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.text.SimpleDateFormat"%>
    <%@ page import="sdcncsi.ict.util.SysPara"%>
    <%@page import="java.io.*,java.util.*,sdcncsi.ict.base.attachment.*"%>
    <%@ page import="sdcncsi.ict.util.RequestUtil"%>
    <%@page import="com.oreilly.servlet.MultipartRequest"%>
    <%
    String res="true";
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
    String file=(String)request.getParameter("t_file_excel");
    //System.out.println(file);
    String accountid3=(String)request.getParameter("accountid3");
    String saveDirectory = "";
    //获取配置参数,文件类型,文件大小
    /*String date = "";
    SimpleDateFormat gs = new SimpleDateFormat("yyyyMMdd");
    Date now = new Date();
    date = gs.format(now);*/ FileFuns fileFuns = new FileFuns();
    try {
    //判断文件类型
    String file_type=SysPara.getValue("dxt_sms_multi_sender_file_type");

    if(!file.substring(file.lastIndexOf(".")+1).equals(file_type))
    {
    out.println("<script>");
    out.println("alert('错误:文件类型错误!');");
    out.println("</script>");
    return;
    }
    //判断文件夹是否存在,不存在创建
    String file_path = SysPara.getValue("dxt_sms_multi_sender_file_path");
    file_path=file_path.replace("\\","//");
    if (!fileFuns.getFileIsExists(file_path)) {
    fileFuns.Createdir(file_path);
    }
    String file_size = SysPara.getValue("dxt_sms_multi_sender_file_size");
    //文件上传后,保存在saveDirectory
    saveDirectory = file_path;
    RandomFileRenamePolicy rfrp = new RandomFileRenamePolicy();
    MultipartRequest multi = null;
            System.out.println("saveDirectory"+saveDirectory);
            System.out.println("file_size"+file_size);
            
    multi = new MultipartRequest(request, saveDirectory, Integer
    .parseInt(file_size), "utf-8", rfrp);

            System.out.println("222"+multi);
    //输出反馈信息
    Enumeration files = multi.getFileNames();
    while (files.hasMoreElements()) {
    String name = (String) files.nextElement();
    File f = multi.getFile(name);
    if (f != null) {
    String fileName = multi.getFilesystemName(name);
    saveDirectory+=fileName;
    }
    }
    } catch (Exception eu) {
    res="false";
    eu.printStackTrace();
    out.println("<script>");
    out.println("alert('错误:文件大小超出限制!');");
    out.println("</script>");

    }
    %>
    <head>
    <script type="text/javascript">
    function myunload(){
    window.opener.callback_getPageData_table_list(1);
    }
    </script>
    <base target="_self">
    </head>
    <body onunload="myunload()">
    <a id="reload" href='' style="display:none"></a>
    </body>
    <script>
    var res='<%=res%>';
    if(res=='true')
    {
      sys_ajaxPost("/dxt/multi_sender.do?method=importmulti_sender&accountid=<%=accountid3%>&excelpath=<%=saveDirectory %>","",function(msg){

     if(msg.result==true){
         location.href="${ctx}/dxt/sms/multi_sender/multi_sender.jsp?result=true";
         }else{
         location.href="${ctx}/dxt/sms/multi_sender/multi_sender.jsp?result=false";
         }
    });
    }
    </script>请问在哪里加啊?谢谢啦