这段话是从书上拿来的:就接收端 servlet 的观点而言,对方上传的文件,只是从输入串流进来的“原始资料流(raw data stream)”,其格式符合 RFC 1867 定义的 multipart/form-data 的内容型态。servlet API 没提供任何能解读此格式的方法。

解决方案 »

  1.   

    Servelet的ContentLength 是必须在文件已经作为二进制流传到服务器端以后才能够用的,如果文件很大的话,内存就溢出了,所以我必须要在上传之前加以控制。
      

  2.   

    建议可以考虑一下用jspsmartupload上传组件,很不错的一个上传组件,以前用过,应该可以解决你的问题。
    http://libo-lighting.51.net/javajia/download/downloadcount.php?id=22
      

  3.   

    自己开发一个PROTOCOL不就行了,类似TCP/IP的握手协议.
      

  4.   

    http://expert.csdn.net/Expert/topic/1136/1136909.xml?temp=.1567194
      

  5.   

    你要知道打开InputStream并不是说就已经读入内存了
    实际上,打开InputStream以后你会发现avaible其实只是不是很大的,
    因为客户端才刚刚开始传送了一小部分给你,你必须开始读取了
    IE才会继续进行上传操作,所以只要你判断那个ContextLenth就可以的
      

  6.   

    噢!但是好像客户端的浏览器会一直停在那里,好像是必须要发送完全部的文件,
       long length = request.getContentLength();
       if (length > 1*1024*1024) {
         out.println("too big !");
         return;
      }这段代码中的"too big"也好像必须在发送完整个的文件之后才会提示在客户端,
    文件如果很大,干脆就不动了?