1、加入2个jar包:commons-fileupload-1.2.1.jar、commons-io-2.0.jar(依赖包)
2、页面代码
index.jsp
<body>
<form action="simpleFileupload" method="post" enctype="multipart/form-data">
最简单的文件上传:<input type="file" name="fileupload">
描述:<input type="text" name="desc">
<input type="submit" value="submit">
</form>
</body>
3、servlet代码
public class SimpleFileupload extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory=new DiskFileItemFactory();
//创建一个文件上传解析器
ServletFileUpload upload=new ServletFileUpload(factory);
//解决上传文件名的中文乱码
upload.setHeaderEncoding("utf-8");
factory.setSizeThreshold(1024*500);//设置内存的临界值为500K
File linshi=new File("E:\\linshi");//当超过500K的时候,存到一个临时文件夹中
factory.setRepository(linshi);
upload.setSizeMax(1024*1024*5);
try {
//得到FileItem的集合items
List<FileItem> items=upload.parseRequest(request);
//遍历items
for(FileItem item:items){
//若是一个一般的表单域,打印信息
if(item.isFormField()){
String name=item.getFieldName();
String value=item.getString();
System.out.println(name+":"+value);
} // 若是文件域则把文件保存到 e:\\files 目录下
else{
String fileName=item.getName();
long sizeInBytes=item.getSize();
System.out.println(fileName);
System.out.println(sizeInBytes);
InputStream in=item.getInputStream();
byte[] buffer=new byte[1024];
int len=0;
fileName="e:\\files\\"+fileName;//文件最终上传的位置
System.out.println(fileName);
OutputStream out=new FileOutputStream(fileName);
while((in.read(buffer))!=-1){
out.write(buffer,0,len);
}
out.close();
in.close();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
运行页面文件即可