代码
使用的组件
Commons-FileUpload
commos-io
链接地址
1、界面
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<html>
<head>
</head>
<body>
<form action="UploadServlet" method="post" enctype="multipart/form-data" name="form1" id="form1" onsubmit="return validate()">
<ul>
<li>请选择要上传的附件:</li>
<li>上传文件:<input type="file" name="file" /></li>
<li><input type="submit" name="Submit" value="上传"/>
<input type="reset" name=Submit2" value="重置"/></li>
</ul>
<%
//判断保存在request范围内的对象是否为空
if(request.getAttribute("result")!=null){
out.println("<script>alert("+request.getAttribute("result")+");</script>");
}
%>
</form>
</body>
</html>
2、UpLoadServlet.java
package servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.RequestDispatcher;
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.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
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 {
String adjunctname;
String fileDir=request.getRealPath("upload/");
String message="文件上传成功";
String address="";
if(ServletFileUpload.isMultipartContent(request)){
DiskFileItemFactory factory=new DiskFileItemFactory();
factory.setSizeThreshold(20*1024);//设置内存中允许存储的字节数
factory.setRepository(factory.getRepository());//设置存放临时文件的目录
//创建新的上传文件句柄
ServletFileUpload upload=new ServletFileUpload(factory);
int size=2*1024*1024;//指定上传文件的大小
List formlists=null;//创建保存上传文件的集合对象
try{
formlists=upload.parseRequest(request);
//获取上传文件集合
}catch(FileUploadException e){
e.printStackTrace();
}
Iterator iter=formlists.iterator();
//获取上传文件迭代器
while(iter.hasNext()){
FileItem formitem=(FileItem)iter.next();
//获取每个上传文件
if(!formitem.isFormField()){
//忽略不是上传文件的表单域
String name=formitem.getName();
//获取上传文件的名称
if(formitem.getSize()>size){
//如果上传文件大于规定的上传文件大小
message="你上传的文件太大,请选择不超过2M的文件";
break;
//退出程序
}//获取上传文件的大小
String adjunctsize=new Long(formitem.getSize()).toString();
//如果上传文件为空
if((name==null)||(name.equals(""))&&(adjunctsize.equals("0")))
continue;
//退出程序
adjunctname =name.substring(name.lastIndexOf("\\")+1,name.length());
address=fileDir+"\\"+adjunctname;
//创建上传文件的保存地址
File saveFile=new File(address);
//根据文件保存地址,创建文件
try{
formitem.write(saveFile);
//向文件写数据
}catch(Exception e){
e.printStackTrace();
}
}
}
request.setAttribute("result", message);
//将提示信息保存在request对象中
RequestDispatcher requestDispatcher=request.getRequestDispatcher("file.jsp");
//设置相应返回地址
requestDispatcher.forward(request,response);
}
public void init() throws ServletException {
}
}