使用的组件 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 { } }