jsp 图片上传问题 异常

源代码是,问题是只想上传图片,加上异常处理后,但没显示要显示的内容 ,而是出现错误页面,请大虾指点
<%

upFile.initialize(pageContext);

try
{
upFile.setAllowedFilesList("jpg,gif,bmp");
}catch(Exception e){ //问题出现这个异常 ,为什么上传其他格式的文件不会显示下面的现实 ,而是出现问题//页//面
%>
<script language="jscript">
alert("只允许上传jpg,gif图片")
window.location.href="upfile.jsp"
</script>
<%
}
upFile.upload();

long size=upFile.getFiles().getSize();
System.out.println("文件大小:"+size);
if(size>2000000){
out.println(" <script>alert('您上传的文件太大,不能完成上传!');history.back(-1); </script>");
}else{
String getFileName=upFile.getFiles().getFile(0).getFileName();
String sql="INSERT INTO tb_file (name,fileSize) values('"+getFileName+"',"+size+")";
conn.executeUpdate(sql);
out.println(" <script>alert('文件上传成功!');window.close(); </script>");
try{
upFile.save("/upload");
}catch(Exception e){
System.out.println("上传文件出现错误:"+e.getMessage());
}
}
%>

问题页面是
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: The extension of the file is not allowed to be uploaded (1010).
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.SecurityException: The extension of the file is not allowed to be uploaded (1010).
com.jspsmart.upload.SmartUpload.upload(SmartUpload.java:297)
org.apache.jsp.upFile_005fdeal_jsp._jspService(upFile_005fdeal_jsp.java:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.

1. 确保你上传的文件是jpg gif bmp这三个后缀名之一.

2. 确保你的上传组件也就是就是SmartUpload的jar包是正确的,
因为现在开发这个组件的官网已不在了,所以这个jar包的来源有多种途径,这导致这个你所用的jar包中所使用的代码有可能被别人改过,
你可以再在别的地方下载一下这个jar包再试试

3. 确保你的Web项目中的WEB-INF/lib目录中有此jar包,
别把此jar包再放到其他lib目录中,比如说Tomcat的lib目录中.

4. 最后,我测试了,你的代码在我这里运行没问题.
测试页面如下(我稍微改了一下):
==================forupload.jsp===================================
<%@page contentType="text/html;charset=gbk"%>
<form action="upfile.jsp" method="post" enctype="multipart/form-data">
title:<input type="text" name="title"><br>
files:<input type="file" name="file"><br>
<input type="submit"><br>
</form>
==================================================================

========================upfile.jsp===============================
<%@page contentType="text/html;charset=gbk"%>
<jsp:useBean id="upFile" class="com.jspsmart.upload.SmartUpload" scope="page"/>
<%
request.setCharacterEncoding("gbk");
upFile.initialize(pageContext);
try{
upFile.setAllowedFilesList("jpg,gif,bmp");
}catch(Exception e){
e.printStackTrace();
}
%>

<%
System.out.println("准备上传文件");
try{
upFile.upload();
}catch(Exception e){
out.println("<script language=\"jscript\">");
out.println("alert(\"只允许上传jpg,gif图片\")");
out.println("window.location.href=\"forupload.jsp\"");
out.print("</script> ");
return;
}

long size=upFile.getFiles().getSize();
System.out.println("文件大小:"+size);
if(size>2){
out.println(" <script>alert('您上传的文件太大,不能完成上传!');history.back(-1); </script>");
}else{
String getFileName=upFile.getFiles().getFile(0).getFileName();
//String sql="INSERT INTO tb_file (name,fileSize) values('"+getFileName+"',"+size+")";
//conn.executeUpdate(sql);

try{
upFile.save("/upload");
out.println(" <script>alert('文件上传成功!');window.close(); </script>");
}catch(Exception e){
System.out.println("上传文件出现错误:"+e.getMessage());
out.println("<script language=\"jscript\">");
out.println("alert(\"上传失败,请重试 ...\")");
out.println("window.location.href=\"forupload.jsp\"");
out.print("</script> ");
}
}
%>
=================================================================
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-18
可能是 TOMCAT里有重复的包 我以前遇到就是这个毛病
第2个回答  2009-06-18
看看哪有输入错误的地方 比如 你用了 中文的分号之类的。
相似回答