当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到

本文探讨了在不同编码方式下表单提交的问题,并提供了解决方案。特别是针对multipart/form-data编码方式下,如何正确获取表单数据及文件上传的方法。

 

当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值。

解决方法:

提交普通表单时,在提交前:

   $("#frm").attr("enctype","application/x-www-form-urlencoded");
    $("#frm").attr("encoding","application/x-www-form-urlencoded");//设置form中的enctype属性

上传文件时,在提交前:

    $("#frm").attr("enctype","multipart/form-data");
    $("#frm").attr("encoding","multipart/form-data");

__________________________________________________________________________________________________

或者:

使用控件。或者在提交图片的时候 将form的提交属性改掉 $("#addform").attr("enctype", "multipart/form-data"); $("#addform").attr("encoding", "multipart/form-data"); 不上传图片只提交普通表单域的时候 将form的提交属性改回默认的$("#addform").attr("enctype","application/x-www-form-urlencoded"); $("#addform").attr("encoding","application/x-www-form-urlencoded"); 两句代码必须同时加上 否则不能生效!

 

 

表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了 multipart/form-data,才能完整的传递文件数据

但是设置了 enctype="multipart/form-data" ,除了file类型表单能获取到,其他value通过request.getParameter都得不到。这种情况下我们可以利用组件来解决该问题,例如用 jspsmartupload组件

   com.jspsmart.upload.SmartUpload su = new   com.jspsmart.upload.SmartUpload();
   su.initialize(pageContext);
   su.service(request, response);
   su.setTotalMaxFileSize(100000000);
   su.setAllowedFilesList("zip,rar");
   su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
   su.upload();

   String Name = su.getRequest().getParameter("Name");
   String TYPE_ID = su.getRequest().getParameter("Type");

通过 su.getRequest().getParameter("value");就可以了,su.upload()好象必须放在前面,测试中将su.upload()放在获取参数后面不成功。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值