[下载参考]https://blog.csdn.net/qq_37638061/article/details/80531855
1.regit.jsp
文件上传条件:
1.表单必须为post(get有大小限制)
2.表单中必须有文件上传项,文件上传项必须有name属性和值
3.表单的enctype属性必须设置为multipart/form-data
<form action="/reg_login1/RegistServlet" method="post" enctype ="multipart/form-data">
<table>
<tr>
<td class="td1">用户名</td>
<td><input type="text" class="input1" name="username"></td>
</tr>
<tr>
<td class="td1">密码</td>
<td><input type="password" class="input1" name="password"></td>
</tr>
<tr>
<td class="td1">昵称</td>
<td><input type="text" class="input1" name="nickname"></td>
</tr>
<tr>
<td class="td1">性别</td>
<td>
<input type="radio" name="sex" value="male">男
<input type="radio" name="sex" value="female">女
</td>
</tr>
<tr>
<td class="td1">上传头像</td>
<td><input type="file" id="photo" name="upload"></td>
</tr>
<tr>
<td class="td1">兴趣爱好</td>
<td><label>
<input type="checkbox" name="hobby" value="篮球">篮球
<input type="checkbox" name="hobby" value="足球">足球
<input type="checkbox" name="hobby" value="排球">排球
<input type="checkbox" name="hobby" value="羽毛球">羽毛球
</label></td>
</tr>
<tr>
<td colspan="2">
<div class="btn-red">
<input type="submit" value="注册" id="reg-btn">
</div>
</td>
</tr>
</table>
</form>
2.RegistServlet.java
//1.创建1个磁盘文件项工厂对象
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
//2.解析1个核心解析类
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
//3.解析request请求,返回List集合,存放的是FileItem对象
List<FileItem> list = servletFileUpload.parseRequest(request);
//定义List集合,用于保存兴趣爱好数据
List<String> hobbyList = new ArrayList<String>();
//4.遍历集合,获得每个FileItem, 判断是表单项还是文件上传项
String url =null;
for (FileItem fileItem : list) {
//判断是表单项还是文件上传项
if(fileItem.isFormField()) {
//接收表单项参数的值
String name = fileItem.getFieldName();//获得表单项的name属性的值
//System.out.println(name+" "+value);
//接收复选框数据
if ("hobby".equals(name)) {
String hobbyValue = fileItem.getString("UTF-8");
hobbyList.add(hobbyValue);
hobbyValue = hobbyList.toString().substring(1,hobbyList.toString().length()-1);
//System.out.println(name+" "+hobbyValue);
map.put(name, hobbyValue);
}else {
String value = fileItem.getString("UTF-8");//获得表单项的值
map.put(name,value);
}
}else {
//文件上传项
//文件上传功能
String fileName = fileItem.getName();//获得上传文件文件名
if(fileName!=null && !"".equals(fileName)) {
String uuidFileName = UploadUtils.getUUIDFileName(fileName);
InputStream is = fileItem.getInputStream();//获得文件上传数据
String path=this.getServletContext().getRealPath("/upload");//获得文件保存路径
url = path + "\\" + uuidFileName;
OutputStream os = new FileOutputStream(url);
int len = 0;
byte[] b = new byte[1024];
while((len = is.read(b))!=-1) {
os.write(b, 0, len);
}
is.close();
os.close();
}
}
}