项目分层:
UP.jsp 页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'UP.jsp' starting page</title>
</head>
<body>
<form action="../UpLoadServlet" method="post" enctype="multipart/form-data">
用户名<input type="text" name="uname"/><br>
密码:<input type="passsword" name="upwd"/><br>
文件一:<input type="file" name="file1" ><br>
文件二:<input type="file" name="file2"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
Success 页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'Success.jsp' starting page</title>
</head>
<body>
name:${requestScope.uname}
passwor: ${requestScope.upwd }
file1: ${requestScope.file1}
file2: ${requestScope.file2}
</body>
</htm
Web.xml文件配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>UpLoadServlet</servlet-name>
<servlet-class>com.servlet.UpLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpLoadServlet</servlet-name>
<url-pattern>/UpLoadServlet</url-pattern>
</servlet-mapping>
</web-app>
Slervlet处理类
package com.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UpLoadServlet extends HttpServlet {
public UpLoadServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//response.setCharacterEncoding("gbk");
DiskFileItemFactory factory=new DiskFileItemFactory();
String path=request.getRealPath("//");//获取绝对路径
factory.setRepository(new File(path));//能临时存放的文件
factory.setSizeThreshold(1024*1024);//超过 1024*1024 的字节的文件 就存放到临时文件 否则放到内存
ServletFileUpload upload=new ServletFileUpload(factory);
try {
//得到一个表单说所有项的集合 一个字段当作一个FileItemitem
List<FileItem> list=upload.parseRequest(request);
for (FileItem item : list) {
if(item.isFormField())//非文件类型的表单FileItem
{
String name=item.getFieldName();//获得表单字段 name
String value=item.getString("gbk");//获得表单字段的值 并且进行编号转换
request.setAttribute(name, value);
}else
{
//文件类型的处理
String name=item.getFieldName();//获得表单字段 的name
String value=item.getName();//得到表单 file里面的值 (路径)
//截取得到上传文件的名称 ——例如 G:/kankan/电影.bmp 的到 电影.bmp
String fileName=value.substring(value.lastIndexOf("//")+1);// "//"通过jdk编译之后转意为 "/"
request.setAttribute(name, fileName);//把文件名称放进作用域
//构造一个输出流
OutputStream os=new FileOutputStream(new File(path+"//fileUpload//upload",fileName));
//得到当前文件的输入流
InputStream is=item.getInputStream();
byte []butter=new byte[400];
int length=0;
while ((length=is.read(butter))>0) {
os.write(butter,0,length);//写文件
}
os.close();
is.close();
}
}
request.getRequestDispatcher("/fileUpload/Success.jsp").forward(request, response);
} catch (FileUploadException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
request.getRequestDispatcher("/fileUpload/Success.jsp").forward(request, response);
}finally{
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}