一、Servlet实现文件上传,需要添加第三方提供的jar包
下载地址:
1) commons-fileupload-1.2.2-bin.zip : 点击打开链接
2) commons-io-2.3-bin.zip : 点击打开链接
二、文件上传的表单提交方式必须是POST方式,
编码类型:enctype="multipart/form-data",默认是 application/x-www-form-urlencoded
比如:<form action="FileUpLoad"enctype="multipart/form-data"method="post">
三、编写java代码
package com.utils; import java.io.File; import java.io.IOException; 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.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUpload extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { doPost(request,response); }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置编码 request.setCharacterEncoding("utf-8"); //2.创建一个工厂类 DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory(); //3.得到当前项目的根目录 String dir=this.getServletContext().getRealPath("/"); //4设置缓存的大小 diskFileItemFactory.setSizeThreshold(1024*1024); //5设置文件的保存目录 File file=new File(dir+"fileTemp"); if(!file.exists()){ file.mkdir(); } //创建request解析器 ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory); List <FileItem> list=null; try{ list=servletFileUpload.parseRequest(request); }catch (Exception e) { // TODO: handle exception System.out.println("error"); }
if(!list.isEmpty()){ for(FileItem fileItem:list){ if(fileItem.isFormField()){
}else{ //表单字段的名称 String fileName=fileItem.getFieldName(); //得到文件的名称 String filePath=fileItem.getName(); fileItem.getString("utf-8"); try { fileItem.write(new File(file, filePath)); } catch (Exception e) { e.printStackTrace(); } } } } }
} |
四、JSP页面编写
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>This page for FileUpload</title> </head> <body> <p>Choose the file for uploading: <form action="accept.jsp" method=post enctype="multipart/form-data"> <input type=file name=fileforload size=30> <br> <input type=submit value=commit name=submit> </form> </body> </html> |