页面表单中当enctype为默认值时,就是普通的表单提交,而当enctype为multipart/form-data,为文件上传表单,不能通过getParameter获取相应的值
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接受上传文件
try {
//创建磁盘文件项工厂 作用:设置临时文件的大小,临时文件存储位置
String realPath=this.getServletContext().getRealPath("temp");
DiskFileItemFactory factory=new DiskFileItemFactory(1024*1024, new File(realPath));//上传过程中内存容量与位置
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");//设置上传文件的文件名码表
boolean multipartContent=upload.isMultipartContent(request);//判断是否是文件上传表单
if(multipartContent){
List<FileItem> items=upload.parseRequest(request);
if(items!=null){
for(FileItem item:items){
if(item.isFormField()){
//是一个普通项
String name=item.getFieldName();
String value=item.getString("UTF-8");//普通表单项内容的编码
} else{
//是一个文件上传项
String fileName=item.getName();
InputStream in=item.getInputStream();
OutputStream out=new FileOutputStream(this.getServletContext().getRealPath("upload")+"/"+fileName);
IOUtils.copy(in, out);
item.delete();
/*byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
out.write(b, 0, len);;*/
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}