我把你的代码复制下来测试了一下,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没有输出到客户端而已。贴一下你的提交表单的页面。顺利说说你的软件环境。

解决方案 »

  1.   

    java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
    是不是类没有被引入吧
      

  2.   

    关键在这个地方:
    java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
    at org.apache.jsp.do_0005fupload$jsp._jspService
    不用我多说了吧。
      

  3.   

    看看这篇文章
    http://www.knowsky.com/3136.html
    和这个贴子
    http://expert.csdn.net/Expert/topic/2615/2615124.xml?temp=.9838068
      

  4.   

    我有一个自己的上传文件代码:<%--演示上传文件--%>
    <%---------┃  作用:   教学演示  ┃-------%>
    <%-------------------------------------------%><%@ 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>
      

  5.   

    SmartUpload 居然这么流行?
      

  6.   

    to:allof01(我行我素) 这位仁兄,我用的坏境是:j2sdk1.4.2,Tomcat 4.1,以前我是用jb做的。现在换到Tomcat下还是不行。请指点。
      

  7.   

    weipj001(快乐王子),
             是什么问题,你怎么解决的,说出来大家参考一下,就不怕遇到同样的问题了。
      

  8.   

    一开始我是用JB编绎的。老是不成功。我看了你说的。就放在Tomcat下编绎,结果是可以的。以前我说放在Tomcat下不行。那是因为我没重启服务器。呵呵。是不是在JB中不能用这个包上传文件?