在学习Servlet文件上传方面遇到了一个问题,就是通过multipart/form-data这个表单类型提交要上传的文件的时候,Servlet用request.getParameter()方法获取非文件的数据时发现为空。
具体如下
jsp页面
<body>
<form action="${pageContext.request.contextPath}/uppicture" method="post" enctype="multipart/form-data" >
昵称:<input type="text" name="name"><br>
<div>
<img src="${image_path}" width="200" height="200">
</div>
头像:<input type="file" name="uploadFile">
<input type="submit" value="上传头像"/>
</form>
用String name=request.getParameter("name")时发现name的值为空
解决方法如下
通过遍历,判断哪些上传是文件类型,哪些不是,若是普通文件类型,通过item.getFieldName()获取普通表单的属性,item.getString("UTF-8")获取属性对应的值。
List <FileItem> items = upload.parseRequest(request);
//遍历
for(FileItem item:items){
//若item为普通表单项
if(item.isFormField()){
//获取表单中属性名称
String fieldName = item.getFieldName();
if(fieldName.equals("name")){
//获取表单属性的值
String name=item.getString("UTF-8");
}
System.out.println(fieldName+"="+name);