How to solve the error reporting problem of importing.xls file on jsp page

  • 2020-05-17 06:08:55
  • OfStack

Import the.xls file on the jsp page and report an error:
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)
I wonder why? How to solve it?
To solve this error, the attribute enctype= "multipart/ form-data" should be added to the form form. However, when the form request is sent to another jsp or servlet, request.getParameter () cannot be used to get the values of various form elements, as follows:
 
<%@ 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 = ""; 
// Get configuration parameters , The file type , The file size  
/*String date = ""; 
SimpleDateFormat gs = new SimpleDateFormat("yyyyMMdd"); 
Date now = new Date(); 
date = gs.format(now);*/ 
FileFuns fileFuns = new FileFuns(); 
try { 
// Determine file type  
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(' Error: file type error! ');"); 
out.println("</script>"); 
return; 
} 
// Determines if the folder exists and is not created  
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"); 
// After uploading the file, save it in 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); 
// Output feedback  
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(' Error: file size exceeded! ');"); 
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> 

Related articles: