日期:2014-05-17  浏览次数:20721 次

servlet如何获取含有ENCTYPE="MULTIPART/FORM-DATA"的表单数据
现在像做一个文件上传+文件分割程序
想在servlet获取含有ENCTYPE="MULTIPART/FORM-DATA"的表单数据

网张找到应该用mySmartUpload.getRequest().getParameter("name");
现在form中有一个type和text表单
如何获取text表单数据

似乎在含有ENCTYPE="MULTIPART/FORM-DATA"的form中
不但type表单不能用request.getParameter()来获取
其他表单也被屏蔽了

我觉得这是个很经典的问题,为什么许多课本的讲解都不详细
即便是像《servlet与jsp核心技术 第二版》这样的书籍也是一带而过
就说servlet api没有为读取上传提供高级工具
见网上那么多提问,也没有很彻底的解决
只好自己再提问


------解决方案--------------------
你的问题我以前也遇到过啊,你通过jspsmartupload或者fileupload这样的第三方组建,在它提供的方法中有专门可以取到text这样的字段的值,具体是什么方法我也不记得了,你可以自己找一找
------解决方案--------------------
up 2 楼
------解决方案--------------------
用fileupload组件吧!
------解决方案--------------------
当表单出现MULTIPART/FORM-DATA的时候,提交就不再是以参数形式提交了,浏览器会把所有参数封装在一个流里面提交。
你要获得提交的值可以通过request.getInputStream来获得,你可以暂时把这个流保存在一个地方,分析这个流的组成,然后截取需要的部分。
当然很多第三方框架已经实现截取功能,网上很多的。
------解决方案--------------------
还真没遇到过这个问题,貌似接触过的表现层全都是用了第三方框架,struts,spring。
------解决方案--------------------
太好了。。呵呵
------解决方案--------------------
关注中...
------解决方案--------------------
request.getInputStream

自己分析一下,写成自己常用的类,
提供取String,String[],int,int[],File,File[]等的方法,
写完了,
你就可以写J2EE框架中的十分之一功能了.