如何解决在jsp页面上导入.xls文件报错问题_JSP编程

在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)
不知道是什么原因?应该怎样来解决呢?
解决这个错误,需要在form表单里面加上加enctype=”multipart/form-data” 这个属性,不过表单请求传到另一个jsp或servlet里时,是不能用request.getParameter()来获取到各个表单元素的值的,如下:

复制代码 代码如下:

<%@ 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>

时间: 2024-08-04 01:31:29

如何解决在jsp页面上导入.xls文件报错问题_JSP编程的相关文章

io流-.jsp页面IO流读取文件报错

问题描述 .jsp页面IO流读取文件报错 <%@ page language=""java"" import=""java.util.*"" pageEncoding=""gb2312""%><%@ page import=""java.io.*""%><%@ page import=""org.a

java-ofbiz首次导入eclipse文件报错,求大神指导下

问题描述 ofbiz首次导入eclipse文件报错,求大神指导下 都是 .getServletContext().getContextPath()); 这一句报错,是什么原因呢?如何解决? 解决方案 这个是JDK版本问题,不用管. 解决方案二: http://blog.csdn.net/jeff06143132/article/details/18814989 这里有介绍 groovy的问题

library-请教大神帮忙解决一下eclipse里面android_NDK编译.c文件报错

问题描述 请教大神帮忙解决一下eclipse里面android_NDK编译.c文件报错 "D:Androidandroid-ndk-r9dndk-build.cmd" all 系统找不到指定的文件. [armeabi-v7a] Compile thumb : hello-jni <= hello-jni.c jni/hello-jni.c:31:1: fatal error: opening dependency file ./obj/local/armeabi-v7a/objs

用npoi导入csv文件报错

问题描述 用npoi导入csv文件报错 调试的时候IO异常指向 using (IWorkbook workbook = new HSSFWorkbook(excelFileStream)) 报错Invalid header signature; Read 32088581144510207, expected -2226271756974174256 解决方案 说明这不是一个excel文件,导入csv不用npoi,npoi只能打开excel格式 读取csv:http://www.cnblogs.

axis1 调用axis2 的服务上传pdf文件.报错

问题描述 axis1 调用axis2 的服务上传pdf文件.报错 axis1 调用axis2 的服务上传pdf文件.报错org.apache.axis2.AxisFault:invalid reference:cid:******的错误 解决方案 Axis2数据绑定报错 解决方案二: http://download.csdn.net/detail/dongf800/5187102

android-Android项目里的res起什么作用,导入xml文件报错什么原因?

问题描述 Android项目里的res起什么作用,导入xml文件报错什么原因? Android项目里的res起什么作用,导入xml文件报错什么原因? 解决方案 resource文件夹,里面存放你所用到的图片资源(也有可能是xml),存放layout的xml文件,一些你自定义的xml文件(values里面) 至于你所说的错误,可能是导入的xml中所需要的资源你没有同时导进去 解决方案二: res是resource的缩写,资源的意思 解决方案三: 对应的xml文件存放在对应的资源文件下 解决方案四:

多个jsp页面共享一个js对象的超级方法_JSP编程

今天,在项目中遇到一个问题,两个js页面要共享一个就js对象.js全局变量和静态变量都不行,其他苦逼的小农们就不要去强求了.而LZ又不想用cookie来存放,一是不安全,二个人喜好.最后发现一种超级方法来解决这个困扰,那就是用window.top['_CACHE']来存放这个变量,即可实现,不同Jsp页面直接的对象共享. var share = { /** * 跨框架数据共享接口 * @param {String} 存储的数据名 * @param {Any} 将要存储的任意数据(无此项则返回被查

JSP页面中如何用select标签实现级联_JSP编程

做查询页面,查询条件比较多的时候往往会涉及到级联.举个简单的例子,拿教务系统来说,我们要查询教学计划信息,查询条件是入学批次.学生层次(专升本.高升专).专业.课程. 它们之间有什么级联关系呢?入学批次影响学生层次(某个入学批次可能只有专升本或者高升专一个学生层次).专业.课程,学生层次影响专业.课程,专业又影响课程.也就是说当选择入学批次时,学生层次.专业和课程的下拉框会局部刷新,选择学生层次时,专业和课程的下拉框会局部刷新,选择专业时,课程的下拉框也会局部刷新. 我们当然不希望已经选择的操作

jsp页面调用applet实现人民币的大小写转换_JSP编程

实现方法一 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   applet实现页面是rmb.jsp,此页面是通过applet来实现人民币小写转换成大写的.此页面有三个变量需要在载入classes的时候进行初始化: <applet  type="applet" id="myApplet" codebase = ".