为什么我上传文件老是出错?

weipj007 2003-12-30 06:37:28

我用SmartUpload上传文件的时候老是出现这样的错误:请帮忙解决一下。分不够再加

源程序如下:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import = "com.jspsmart.upload.SmartUpload" %>
<%@ page import = "java.util.Date" %>
<%@ page import = " java.io.*"%>
<%
String path="upload";
Date uDate = new Date();
try{

SmartUpload mySmartUpload = new SmartUpload();

mySmartUpload.initialize(pageContext);

mySmartUpload.upload();

String att = mySmartUpload.getFiles().getFile(0).getFileName();
if(att!=null && !att.equals("")){

String fileName=uDate.getTime()+"."+mySmartUpload.getFiles().getFile(0).getFileExt();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<%
mySmartUpload.setAllowedFilesList("gif,bmp,jpeg,jpg,txt,id,doc,mpp,ppt");
mySmartUpload.setTotalMaxFileSize(5120000);
mySmartUpload.getFiles().getFile(0).saveAs(this.getServletContext().getRealPath("/")+fileName);
%>
<%
}else{}
}catch(Exception e){
}
%>
</body>
</html>

错误:
javax.servlet.ServletException: javax/servlet/ServletRequest
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.do_0005fupload$jsp._jspService(do_0005fupload$jsp.java:158)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:536)


root cause

java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
at org.apache.jsp.do_0005fupload$jsp._jspService(do_0005fupload$jsp.java:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:536)



--------------------------------------------------------------------------------
...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
allof01 2003-12-31
  • 打赏
  • 举报
回复
weipj001(快乐王子),
是什么问题,你怎么解决的,说出来大家参考一下,就不怕遇到同样的问题了。
weipj007 2003-12-31
  • 打赏
  • 举报
回复
呵呵。这个问题解决了。谢谢各位兄弟们。
weipj007 2003-12-31
  • 打赏
  • 举报
回复
to:allof01(我行我素) 这位仁兄,我用的坏境是:j2sdk1.4.2,Tomcat 4.1,以前我是用jb做的。现在换到Tomcat下还是不行。请指点。
allof01 2003-12-31
  • 打赏
  • 举报
回复
JB9中可以使用SmartUpload
weipj007 2003-12-31
  • 打赏
  • 举报
回复
一开始我是用JB编绎的。老是不成功。我看了你说的。就放在Tomcat下编绎,结果是可以的。以前我说放在Tomcat下不行。那是因为我没重启服务器。呵呵。是不是在JB中不能用这个包上传文件?
wuyg719 2003-12-30
  • 打赏
  • 举报
回复
SmartUpload 居然这么流行?
louisqiang 2003-12-30
  • 打赏
  • 举报
回复
我有一个自己的上传文件代码:

<%--演示上传文件--%>
<%---------┃ 作用: 教学演示 ┃-------%>
<%-------------------------------------------%>

<%@ page contentType="text/html;charset=gb2312" %>
<%@page import="java.io.*"%>
<%@page import="javax.servlet.*"%>
<%!
ServletInputStream si=null;
StringBuffer ln=null;//字符串缓存
String st=null;//存放一行的数据

int len=0;//每次读取的数据长度。

byte[] buffer=new byte[1000];//每次缓存的数据
//读取一行
public String getNextLine()
{
StringBuffer sb=new StringBuffer();
try
{
len=si.readLine(buffer ,0,1000);
if(len>0)
{
for(int i=0;i<len;i++)
{
char b=(char)buffer[i];
sb.append(b);
}
return sb.toString();
}
}catch(Exception err)
{
}
return null;
}
//按字节读取一行
public byte[] getBytes()
{
try
{
len=si.readLine(buffer,0,1000);
}catch(Exception err)
{
return null;
}
if(len<=0)
{
return null;
}
byte[] data=new byte[len];
System.arraycopy(buffer,0,data,0,len);
return data;
}
//解析文件名
public String getFileName(String con)
{
String fileName=con.substring(con.indexOf('"')+1,con.lastIndexOf('"'));//去掉引号

int i1=fileName.lastIndexOf("\\");
int i2=fileName.lastIndexOf("/");

if(i1!=-1)
{
fileName=fileName.substring(i1+1);
}

if(i2!=-1)
{
fileName.substring(i2+1);
}
return fileName;
}

//把字节数组转换为字符串
public String getAsString(byte[] data)
{
StringBuffer sb=new StringBuffer();
for(int i=0;i<data.length;i++)
{
char c=(char)data[i];
sb.append(c);
}
return sb.toString();
}
%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<font color=red>正在上传......</font><br>
<%
//得到输入数据流
si=request.getInputStream();
//读取第一行
String bond=getNextLine(); //读取第一行:解析文件的界限---表示文件开始
if(bond.endsWith("\n"))
{
bond=bond.substring(0,bond.length()-2);
out.println(bond+"<br>");
}

String tmp=null;

while((tmp=getNextLine())!=null)
{
String filename=null;
String contype=null;
out.print("原始的文件名行:"+tmp+ "<br>");
int idx=tmp.indexOf("filename");
if(idx==-1)
{
idx=tmp.indexOf("name");
continue;
}
filename=getFileName(tmp.substring(idx));//解析出文件名
out.println("文件名是:" + filename+"<br>");

String type=getNextLine();//文件名后面一行是文件类型
out.print("原始的文件类型行:"+type+"<br>");
contype=type.substring(type.indexOf(' ')+1);
out.print("文件类型:"+contype+"<br>");

String no=getNextLine();
out.print("数据开始啦:" + no+"<br>");//没有作用:一行空行-----表示数据开始

File f=new File("c:\\" + filename);
FileOutputStream fos=new FileOutputStream(f);

byte[] data=getBytes();
while(!getAsString(data).startsWith(bond))//遇到文件开始边界,表示下一个文件开始,退出循环
{
fos.write(data);//写数据(每次写1000个字节,若你高兴的话,可以每次读取1024个字节)
data=getBytes();
}
fos.close();
}
%>
<br><font color=green>传递完毕</font>
</BODY>
</HTML>
寒冬 2003-12-30
  • 打赏
  • 举报
回复
看看这篇文章
http://www.knowsky.com/3136.html
和这个贴子
http://expert.csdn.net/Expert/topic/2615/2615124.xml?temp=.9838068

whodsow 2003-12-30
  • 打赏
  • 举报
回复
关键在这个地方:
java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
at org.apache.jsp.do_0005fupload$jsp._jspService
不用我多说了吧。
sammy791010 2003-12-30
  • 打赏
  • 举报
回复
java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
是不是类没有被引入吧
allof01 2003-12-30
  • 打赏
  • 举报
回复
我把你的代码复制下来测试了一下,tomcat 4.0/jdk1.4下没什么大问题啊,文件也正确上传了。只不过
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
这几句HTML没有输出到客户端而已。贴一下你的提交表单的页面。顺利说说你的软件环境。
  自3.5版发布以来,我们不断的测试与收集用户反馈,修复了一系列的BUG,特别是栏目页生成采用增量生成方式,较以前生成方式有非常大的性能提升,这次发布针对对增量生成JS分页对搜索引擎不友好的问题,开发团队经过讨论与性能测试,对JS分页部分改进成文件替换的方式,解决了对SEO不友好的问题,现决定发布3.5.0 20100428更新包。 BUG列表:   SiteFactory:   ●增量生成分页采用JS,对搜索引擎不友好问题;   ●修复子域名无法访问的问题;   ●修复后台管理目录变更后投票功能出错的问题;   ●修复后台管理目录变更后采集出现JS错误的问题;   ●修复后台管理目录变更后无法批量上传文件的问题;   ●修复后台自定义表单数据管理页面的右侧显示为表单类别的问题;   ●修复系统整合后,用户登录不同步的问题;   ●修复添加信息时标题的默认颜色变成黑色的问题;   ●修复转向链接没有类型时出错的问题;   ●修复标签管理页面生成DW插件出错;   ●修复图片名称存在空格时会出错的问题;   ●修复图片内容页不显示以中文命名的图片的问题;   ●修复标签快捷编辑页面跳转没有针对标签类型进行判断的问题;   ●修复外部链接节点链接为mailto:开头时返回链接错误的问题;   ●修复升级包会替换用户网站的favicon.ico文件问题;   ●修复高级搜索页面,无法解析@Request的问题;   ●修复在已上传文件中预览WMV文件出错的问题;   ●修复操作系统为Windows 2008 R2,但提示为Windows 7的问题;   ●修复子域名动态分页出错问题;   ●修复文章首页无法显示缩略图的问题;   ●修复动态模板无法取得参数值的问题;   BizIdea:   ●修复银联网付通在线支付接口功能缺少默认数据的问题;   ●修复优惠券数据较多时出错的问题;   ●修复升级客户为商业客户功能不兼容2000数据库的问题;   ●修复200O数据库下确认资金有错误;   ●修复淘宝的商品标题含有HTML字符在后台没解析的问题;   ●修复专业版:会员中心添加商品设置为不能销售也能立刻显示在网站首页的问题;   ●修复修改送货方式时,添加外省标准运费后,其他值就不能修改的问题;   ●修复订单退货恢复后,再修改订单商品数量,商品被自动删除的问题;   ●修复后台添加订单时,选择商品后商品名乱码的问题;      SmartGov:   ●修复信息公开索引号查询时有两个“-”时搜索不到结果的问题;   ●修复后台投诉与举报的权限问题;   ●修复查看信件不显示处理结果的问题;   ●修复升级程序没有处理CatalogNumber的问题;   ●修复升级程序误删除部门数据的问题;   ●修复升级程在替换标签SQL语句时没有将PE_GV_Dempartment替换成PE_Department问题;   ●修复部门管理中“设置默认部门分类”操作不兼容2000数据库的问题;   ●修复信访内容打印后显示html代码的问题;   ●修复前台公开信息查询时如果有/会无法查询的问题;      SmartSchool:   ●修复学校版后台点击班级进行排课时出错的问题;   人才模块:   ●修复前台职位快速申请页面填写了工作经验,但总是提醒工作经历不能为空的问题;

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧