通过DataInputStream和DataOutputStream来编写一个上载类即可。
  public void uploadFile(javax.servlet.http.HttpServletRequest req) throws IOException,Exception {
     try {
        String contentType=req.getContentType();
        int contentLength=req.getContentLength();
        java.io.DataInputStream bis=new java.io.DataInputStream(req.getInputStream());
        int once = 0;
        int total = 0;
        byte[] buffer=new byte[contentLength];
        while ((total<contentLength) && (once>=0)) {
          once = bis.read(buffer,total,contentLength);
          total += once;
        }
        int boundaryStart=contentType.indexOf("boundary=");
        boundaryStart=boundaryStart+"boundary=".length();
        String boundary="--"+contentType.substring(boundaryStart);
        int pos=getFormNameIndex(buffer,"filename=\"".getBytes(),1)+"filename=\"".length();
        int posEnd=getFormNameIndex(buffer,"\"".getBytes(),pos);
        String filename=new String(buffer,pos,posEnd-pos);
        pos=filename.lastIndexOf(".");
String filenames=System.currentTimeMillis()/1000+filename.substring(pos);
pos=getFormNameIndex(buffer,"Content-Type: ".getBytes(),1);
        pos=getFormNameIndex(buffer,"\r\n".getBytes(),pos+1)+4;
        int endpos=getFormNameIndex(buffer,boundary.getBytes(),pos+20);
int len=endpos-pos;
        java.io.DataOutputStream bos= new java.io.DataOutputStream(new java.io.FileOutputStream(new java.io.File(filepath,filenames)));
        bos.write(buffer,pos,len);
        bis.close();
        bos.close();
     }catch(Exception exc) {
        throw new Exception("upload failed.");
     }finally{     }
在客户端的form中使用enctype="multipart/form-data"

解决方案 »

  1.   

    saintKnight(saintKnight) 你好!恕我愚昧,我想再请问一下,你贴出来的是一个完整java程序吗?是不是直接就可以把它编译成class文件啊?
    在客户端的form中使用enctype=  "multipart/form-data  " 我也不明白这个,你能给我一个客户端应用的简单例子吗?如果不方便贴出,可以发到我的邮箱里[email protected]
    定有重谢!
      

  2.   

    网上有一个功能很强大的上传组件SmartUpload
    搜索本论坛也可以找的到!
      

  3.   

    以上代码只是一个类中的一个上载方法,只要新建一个类,然后将其拷入进去就可。
    客户端页面内容如下:
    <form name="loadform" method="post" enctype="multipart/form-data" action="handler.jsp">
    <table border="0" align="center" cellpadding="0" cellspacing="0" width="300">
      <tr>
        <td>选择文件:</td>
      </tr>
      <tr>
        <td><input type="file" name="FILENAME" size="30"></td>
      </tr>
      <tr>
        <td align="center">
        <p>&nbsp;</p>
            <a href="javascript:loadform.submit();">上载</a>&nbsp;
            <a href="javascript:window.close();">关闭</a>
        </td>
      </tr>
    </table>
    </form>
    然后在handler.jsp页面中实例化上载类并调用上载方法(传递参数为request)即可。
      

  4.   

    saintKnight(saintKnight) 实在不好意思。我按你说的先建了一个类,然后烤入你第一个帖子中的代码,存为*.java文件,然后准备把它编译*.clasee文件时,提示有八个错误。不知道怎么回事,特向你请教!