第一步:
1导入第三方包(commons-io-2.1.jar)(commons-fileupload-1.2.2.jar)
第二步:写好页面然后修改<form>表单enctype="multipart/form-data"属性(包含文件的表单都必须用这个属性 )
<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Stringpath = request.getContextPath();
StringbasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">
<html>
<head>
<title>文件上传</title>
<metaname="keywords"content="keyword1,keyword2,keyword3">
<meta name="description"content="this is my page">
<meta name="content-type"content="text/html; charset=UTF-8">
<!--<linkrel="stylesheet"type="text/css"href="./styles.css">-->
</head>
<body>
<formaction="UploadServlet"method="post"enctype="multipart/form-data">
<table width="600px">
<tr>
<td>上传者</td>
<td><inputtype="text"name="name"></td>
</tr>
<tr>
<td>上传文件</td>
<td><inputtype="file"name="myfile"></td>
</tr>
<tr>
<td colspan="2"> <inputtype="submit"value="上传"/></td>
</tr>
</table>
</form>
</body>
</html>
第三步:写servlet(UploadServlet.java)
packagecom.example.servlet;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.io.PrintWriter;
importjava.util.List;
importjava.util.UUID;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.FileUploadException;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;
publicclass UploadServlet extendsHttpServlet {
@Override
protectedvoiddoGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
try {
// 创建工厂
DiskFileItemFactory factory = newDiskFileItemFactory();
File f = new File("/File");
if (!f.exists()) {
f.mkdir();
}
// 设置文件的缓存路径
factory.setRepository(f);
// 创建fileupload组件
ServletFileUpload fileUpload =new ServletFileUpload(factory);
fileUpload.setHeaderEncoding("gbk");
// 解析request
List<FileItem> fileItems =fileUpload.parseRequest(req);
PrintWriter write=resp.getWriter();
//遍历集合
for (FileItem fileItem : fileItems) {
if (fileItem.isFormField()) {//判断是否为普通字段
//获取字段名和字段值
Stringname=fileItem.getFieldName();
Stringvalue=fileItem.getString("gbk");
write.println("上传者:"+value);
}else{
//上传文件路径
Stringfilename=fileItem.getName();
write.println("文件来源:"+filename);
//截取文件名
filename =filename.substring(filename.lastIndexOf("\\")+1);
write.println("成功上传的文件:"+filename);
//文件名唯一
filename = UUID.randomUUID().toString()+"_"+filename;
//在服务器创建同名文件
String webPath="/File/";
Stringfilepath=getServletContext().getRealPath(webPath+filename);
//创建文件
File file = newFile(filepath);
file.getParentFile().mkdirs();
file.createNewFile();
//获得上传文件流
InputStreamin=fileItem.getInputStream();
//获得写入文件流
OutputStream out=newFileOutputStream(file);
//
byte[] buffer =newbyte[1024];
int len ;
while((len = in.read(buffer))>0){
out.write(buffer,0,len);
}
//关闭流
in.close();
out.close();
//删除临时文件
fileItem.delete();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protectedvoiddoPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
第四步:配置web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.example.servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
第五步:Tomcat部署项目!运行上传文件!
第六步:上传成功!
第七步查看已经上传成功的文件: