=======================jsp页面======================
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="executeUpload.jsp" method="post" enctype="multipart/form-data">
your file:<input type="file" name="fileName"/><br/>
上传:<input type="submit" value="上传">
</form>
</body>
</html>
============================后台处理上传==========================
<%
//实例化工厂
DiskFileItemFactory factory=new DiskFileItemFactory();
//设置上传工厂的限制
factory.setSizeThreshold(1024*1024*20);
//设置上传的存放处
//---1:直接存放到项目根目录
//factory.setRepository(new File(request.getRealPath("/")));
//---2:存放到指定的文件目录
File file=new File(request.getRealPath("/")+"userFile");
if(!file.exists()){
file.mkdirs();
}
factory.setRepository(file);
//创建上传文件的类ServletFileUpload是主要的
ServletFileUpload upload=new ServletFileUpload(factory);
//设置上传文件的大小
upload.setSizeMax(1024*1024*20);
//处理HTTP请求,items是所有表单项
List items=upload.parseRequest(request);
//遍历所有表单项
for(Iterator it=items.iterator();it.hasNext();){
FileItem item=(FileItem)it.next();
//如果表单项是普通文本项
if(item.isFormField()){
String name=item.getFieldName();
String value=item.getString("GBK");
System.out.println("name=value:"+name+"="+value);
}else{
//取得文件表单域的名称
String fieldName=item.getFieldName();
//取得文件名
String fileName=item.getName();
//取得文件类型
String contentType=item.getContentType();
//上传文件
FileOutputStream write=new FileOutputStream(
request.getRealPath("/")+"userFile/"+
System.currentTimeMillis()+
fileName.substring(fileName.lastIndexOf("."),fileName.length())
);
//如果要上传的文件在内存中已经存在
if(item.isInMemory()){
write.write(item.get());
}else{
//得到输入流
InputStream is=item.getInputStream();
int len=0;
byte[] bytes=new byte[1024];
while(true){
len=0;
len=is.read(bytes);
if(len<1)
break;
write.write(bytes,0,len);
}
is.close();
write.flush();
write.close();
}
}
}
%>
===========注意用此方法需要两个jar包: