一 是网上大部分都说的一种做法。 二是此人琢磨出的一种做法。
一. 今天在原来上传文件页面的基础上,想添加一段文件的简介
因为同时要上传文件,所以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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。