FORM的ENCTYPE="multipart/form-data" 时request.getParameter()值为null问题的解决

本文详细介绍了在使用commonsfileupload组件进行文件上传时遇到的问题及解决方案,通过引入jspsmartupload组件并正确配置enctype属性,实现了文件的完整上传。文章还提供了具体的代码示例,包括初始化组件、配置参数、上传文件以及获取上传信息的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 是网上大部分都说的一种做法。 二是此人琢磨出的一种做法。


一.  今天在原来上传文件页面的基础上,想添加一段文件的简介

因为同时要上传文件,所以ENCTYPE="multipart/form-data" 必须要加在form里面

可是这样的话,我再servlet里面用request.getParameter()方法无论如何都只是获得null值,

不是一般的郁闷,百度了一下,有人出现了同样的问题可是它用的是jspsmartupload组件实现文件上传的,

而我用的commons fileupload组件,仔细看了一下这个组件的api,可是英语太差了,没有发现相关的信息

我又尝试用session传递参数,可是发现有点麻烦,因为在表单提交之时你就得赋给session表单上它的数值,

还有一种方法就是使用jspsmartupload表单中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()放在获取参数后面不成功。



enctype=/"multipart/form-data/"是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功
,
取表单值加入数据库时,用到下面的:
 SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
 su.getRequest().getParameterValues();取数组值
 su.getRequest().getParameter( );取单个参数单个值

二.  

<form action="${ctx}/upload2.jsp" id="form1" name="form1" encType="multipart/form-data"  method="post" target="hidden_frame" onsubmit="return validForm(this)" >
		<table>
			<tr>
				<td>缩略图:</td>
				<td><img src="" width="80" height="80"/></td>
				<td><input type="hidden" name="type" id="type" value="1"/><input type="file" id="file" name="file" /><INPUT type="submit" value="上传文件"><span id="msg"></span><br/><font color="red">支持JPG,JPEG,GIF,BMP文件的上传</font></td>
			</tr>
		</table>    
		<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
	</form>


<script type="text/javascript">
    function validForm(fm){
       fm.action = fm.action + "?type=" + fm['type'].value;
       return true;
    }
</script>
版权属于: 技术客
官方地址:  http://www.sunjs.com  
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值