登录页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body> <form action="do_uplpad_show.jsp" method="post" enctype="multipart/form-data" >
姓名:<input type="test"name="username"></br>
性别:<input type="test"name="age"></br>
文件上传:<input type="file"name="file"></br>
<input type="submit"value="登录">
</form>
</body>
</html>
处理页面:
<%@page import="java.util.ArrayList"%>
<%@page import="ch_06.User"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
FileItemFactory fileItemFactory=new DiskFileItemFactory();
//创建ServletFileUpload对象(上传文件核心对象)
ServletFileUpload sfu=new ServletFileUpload(fileItemFactory);
sfu.setSizeMax(1024*300);//限制图片大小 限制300kb
try{
sfu.setHeaderEncoding("UTF-8");
if(ServletFileUpload.isMultipartContent(request)){
/*
解析请对象
通过集合来获取每一个表单项
*/
List<FileItem>fileItems=sfu.parseRequest(request);
for(FileItem fileItem:fileItems){
//判断fileItem对应的值表单控件是不是普通控件
if(fileItem.isFormField()){
//此处是普通表单数据
String fieldName=fileItem.getFieldName();
String value=fileItem.getString("UTF-8");
User user=new User();
if(fieldName.equals("username")){
user.setName(value);
}
if(fieldName.equals("age")){
user.setAge(value);
}
out.println(fieldName+"\t"+value);
}else{
/*
处理文件控件的逻辑
首先应该先得到文件上传到服务器的绝对路径
要用到application对象
*/
String path= application.getRealPath("/uploadfile");//获取服务器上的文件 写入到服务器上
out.println(path);
out.println(fileItem.getName());
//对于文件上传进行限制 限制上船格式
//jpg png gif bmp
String fileName=fileItem.getName();
//截取字符串
Integer index=fileName.lastIndexOf(".");
//获取字符串下标
String houzhui =fileName.substring(index+1);
//后缀列表
List<String>houzhuiList=new ArrayList<>();
houzhuiList.add("jpg");
houzhuiList.add("png");
houzhuiList.add("gif");
houzhuiList.add("bmp");
if(houzhuiList.contains(houzhui)){
fileItem.write(new File(path,fileItem.getName()));
}else{
out.print("<script>");
out.print("alert('文件格式不支持 请重新上传');");
out.print("history.go(-1);");
out.print("</script>");
}
}
}
}else{
out.println("表单类型不支持文件上传");
}
}catch(Exception e){
out.print("你上传文件已经超出无法上传 最多只支持300kb");
}
%>
</body>
</html>
3641

被折叠的 条评论
为什么被折叠?



