用commons-fileupload接收不到普通文本框的值的问题分析:
<form method="post" enctype="multipart/form-data" action="/fileupload">
上传文件:
<input type="file" name="upfile">
<select name="professionType" style="height: 35px;">
<c:forEach items="${userProfession}" var="userProfession">
<option value="${userProfession.professionId}">${userProfession.profession}</option>
</c:forEach>
</select>
<input type="submit" value="上传" />
<input type="button" οnclick="hideDiv()" value="取消">
</form>
表单中enctype="multipart/form-data"
可以看下提交后的数据:
-----------------------------26083148818346
Content-Disposition: form-data; name="upfile"; filename="docreader.dll"
Content-Type: application/qscall-plugin
MZ�������ÿÿ��¸�������@����������������������������������� ��º�´ Í!¸LÍ!This program cannot be
run in DOS mode.
....//省略
-----------------------------26083148818346
Content-Disposition: form-data; name="professionType"
2
-----------------------------26083148818346--
这个声明可知表单提交数据的时候是与二进制的形式提交的,采用普通的获取req.getParameter("professionType")是获取不到的
所以需要其他方法才可以获取到提交的普通表单属性
上面的提交格式想到有如下方法:
1)
可以通过输入流解析以上的格式,从而解析到我们需要的值
2)
通过commons-fileupload中的getFieldName()获取到我们需要的professionType,通过getString()获取到professionType的值
<form method="post" enctype="multipart/form-data" action="/fileupload">
上传文件:
<input type="file" name="upfile">
<select name="professionType" style="height: 35px;">
<c:forEach items="${userProfession}" var="userProfession">
<option value="${userProfession.professionId}">${userProfession.profession}</option>
</c:forEach>
</select>
<input type="submit" value="上传" />
<input type="button" οnclick="hideDiv()" value="取消">
</form>
表单中enctype="multipart/form-data"
可以看下提交后的数据:
-----------------------------26083148818346
Content-Disposition: form-data; name="upfile"; filename="docreader.dll"
Content-Type: application/qscall-plugin
MZ�������ÿÿ��¸�������@����������������������������������� ��º�´ Í!¸LÍ!This program cannot be
run in DOS mode.
....//省略
-----------------------------26083148818346
Content-Disposition: form-data; name="professionType"
2
-----------------------------26083148818346--
这个声明可知表单提交数据的时候是与二进制的形式提交的,采用普通的获取req.getParameter("professionType")是获取不到的
所以需要其他方法才可以获取到提交的普通表单属性
上面的提交格式想到有如下方法:
1)
可以通过输入流解析以上的格式,从而解析到我们需要的值
2)
通过commons-fileupload中的getFieldName()获取到我们需要的professionType,通过getString()获取到professionType的值