问题描述
我在JSP页面中添加了多个上传文件的功能,在form里加了enctype="multipart/form-data"这个属性,那么如何在Servelt中如何获得表单中元素的值(我用Request.getParameter())获得的参数都是null值
解决方案
解决方案二:
记得enctype="multipart/form-data"就不能获得!上传一般有组件,组件有相应的方法,你用的是什么组件,自己找下
解决方案三:
帅哥,我用的Servlet自带的组件,没用用Struts组件。否则用组件能解决的。
解决方案四:
只要是from的传递方式,到达servlet中使用request.getParameter("");就可以得到的,不会是哪些地方,你写的有问题吧?
解决方案五:
request.getInputStream()自己解析,具体怎么解析没试过(因为上传下载都会有很好的组件,组件很好完成了参数截取),如果非要自己弄,难度比较大
解决方案六:
commons-upload.jar刚用,还不错
解决方案七:
还是用组件比较好。。。form的类型变成enctype="multipart/form-data"之后,用request.getParameter是得不到的。。。以前用request.getInputStream只解析过文件名,都感觉很麻烦
解决方案八:
会不会跟method有关,看看是post还是get提交
解决方案九:
enctype="multipart/form-data"这个一般是上传文件的时候用到到的属性。我同意楼上说法,<formaction="????"name="formname"id="formid"method="POST"enctype="multipart/form-data">你应该看看你的method方法是不是post.
解决方案十:
method="post"肯定是Post,但是在Servlet中request.getParameter();拿表单中的元素真的拿不到,因为表单中不只是一个上传文件。更多的Form里是几个元素啊。如姓名、年龄、身高、体重、电话、等等。这些值在Servlet中用Request是肯定拿不到的,我都试了N次了。网上搜索资料,这个问题很多,好多人都遇到过这个问题。
解决方案十一:
publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//创建一个工厂实例,为解析器提供解析时的//缺省的配置DiskFileItemFactorydfif=newDiskFileItemFactory();//创建解析器ServletFileUploadsfu=newServletFileUpload(dfif);//使用解析器解析try{//FileItem对象封装了一个表单域的数据。List<FileItem>items=sfu.parseRequest(request);//只需要访问FileItem对象提供的方法,就可以//获取表单中的数据for(inti=0;i<items.size();i++){FileItemitem=items.get(i);if(item.isFormField()){//如果是普通表单域Stringusername=item.getString();System.out.println("username:"+username);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//在此接受普通表单域的值//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}else{//如果是上传文件表单域,将文件保存在服务器端ServletContextsctx=getServletContext();//依据逻辑路径upload返回实际部署时的物理路径Stringpath=sctx.getRealPath("upload");//获得上传文件的名称StringfileName=item.getName();Filefile=newFile(path+"\"+fileName);item.write(file);}}}catch(Exceptione){e.printStackTrace();}}在Servlet中这样处理就行,除了文件上传,其他的表单域在if块中取值!
解决方案十二:
楼主用的什么实现上传的,我以前用过smartUpload,通过smartUpload.getRequest().getParameter("xxx")可以去到参数~~
解决方案十三:
如果写上传下载组件,enctype="multipart/form-data"这种方式数据的传输方式为二进制,一般的FORM表单提交为编码后的字符,所以用request.getParameter()是取不到的。你可以试着用流的方式而接收。
解决方案十四:
引用11楼的回复:
楼主用的什么实现上传的,我以前用过smartUpload,通过smartUpload.getRequest().getParameter("xxx")可以去到参数~~
我也是这么干的
解决方案十五:
这个方案不行就找替代方案呗!不要在一棵树上屌丝了、、、上传的方案有很多的!还是用组件吧!方便点
解决方案:
谢谢大家的帮助!现在问题已经解决了。多谢你们提出的宝贵意见。
解决方案:
楼主怎么解决的啊求告知
解决方案:
不可能的,加了这个没影响的,只是file文件格式变了而已,其他字符量变量照常使用的。