form设置了enctype="multipart/form-data"   属性后,就是2进制传输数据了 
form里面的input的值传过去的不过是以2进制的方式,所以request就得不到值了。
这是一个java的BUG.不管用什么语言处理文件表单,form的POST方法提交的数据都是在标准输入中,C/c++,perl这些语言都是要求程序员自己从标准输入中读取数据再处理的,象php,asp,c#这些语言就提供了写好的组件,他们把文件放处理好放在一个内存区,把字段也处理好放在一个内存区,这样你用不同的方法就可以从相应的地方取到了你要的内容。JSP是怎么处理的呢?它在用request.getParameter("xxxx");把标准输入中的内容全部读出来,只取那些字段内容.关于文件内容的那些数据就不要了.大家知道标准输入是一个buffer,一旦读过一次,下面再读就没有了,所以当你request.getParameter ("xxx");再读文件就取不到了.而目前市场上提供jsp文件上传组件的程序中,获得文件内容也是犯了同样的错误.他们只把文件
那一段的数据读出来,字段那一段数据就不要了,所以读取文件后request对象中的内容也空了。知道了这个原因,就好解决了.我们可以作自己来写,用两个地方同时把request.getInputStream()的所有数据都放在它相应的地方,先用一个Hashtable把所有字段的name和value压进去,同时把文件源数据放在DataInputStream中,同时提交多少文件(在读数据源时每读到一行Content-Type就说明有一个文件)就保存几个DataInputStream,这样再用一个 request.getFile()从内存中的DataInputStream中取得文件内容返回给调用者.