目录
4) parseRequest(HttpServletRequest req)方法
public void setSizeMax(long sizeMax)
public void setSizeThreshold(int sizeThreshold)//上面方法的集合
public void setRepositoryPath(String repositoryPath)
public List parseRequest(HttpServletRequest req)
parseRequest(HttpServletRequest req, int sizeThreshold, long sizeMax, String path)
用于判断请求中的内容是否是“multipart/form—data”类型,是则返回 true,否则返回 false。isMultipartContent()方法是一个静态方法,不用创建 DiskFileUpload 类的实例对象即可被调用,其完整语法定义如下:
public static final boolean isMultipartContent(HttpServletRequest req)
public void setHeaderEncoding(String encoding)
public boolean isFormField()
public String getName()
public String getFieldName()
write()方法用于将 FileItem 对象中保存的主体内容保存到某个指定的文件中。主要用途是将上传的文件内容保存在本地文件系统中。
public void write(File file)
- public java.lang.String getString()
- public java.lang.String getString(java.lang.String encoding)
public String getContentType()
public boolean isInMemory()
public void delete()
- package servlettest;
- import java.io.File;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.Iterator;
- 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.DiskFileUpload;
- import org.apache.commons.fileupload.FileItem;
- import org.apache.commons.fileupload.FileUploadException;
- public class FileUploadServlet extends HttpServlet {
- public FileUploadServlet() {
- super();
- }
- public void destroy() {
- super.destroy();
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=utf-8");
- PrintWriter out = response.getWriter();
- //设置保存上传文件的目录
- String uploadDir = "d:/upfile"; //文件上传后的保存路径
- out.println("上传文件存储目录!"+uploadDir);
- File fUploadDir = new File(uploadDir);
- if(!fUploadDir.exists()){
- if(!fUploadDir.mkdir()){
- out.println("无法创建存储目录 d:/upfile!");
- return;
- }
- }
- if (!DiskFileUpload.isMultipartContent(request)){
- out.println("只能处理 multipart/form-data 类型的数据!");
- return;
- }
- DiskFileUpload fu = new DiskFileUpload();
- fu.setSizeMax(1024*1024*200);//最多上传 200M 数据
- fu.setSizeThreshold(1024*1024);//超过 1M 的数据采用临时文件缓存
- //fu.setRepositoryPath(...); //设置临时文件存储位置(如不设置,则采用默认位置)
- fu.setHeaderEncoding("utf-8");//设置上传的文件字段的文件名所用的字符集编码
- List fileItems = null;//创建文件集合,用于保存浏览器表单传来的文件
- try
- {
- fileItems = fu.parseRequest(request);
- }
- catch(FileUploadException e)
- {
- out.println("解析数据时出现如下问题:");
- e.printStackTrace(out);
- return;
- }
- //下面通过迭代器逐个将集合中的文件取出,保存到服务器上
- Iterator it = fileItems.iterator(); //创建迭代器对象 it
- while (it.hasNext())
- {
- FileItem fitem = (FileItem) it.next(); //由迭代器取出文件项
- if (!fitem.isFormField()) //忽略其他不属于文件域的那些表单信息
- try{
- String pathSrc = fitem.getName();
- //文件名为空的文件项不处理
- if(pathSrc.trim().equals(""))continue;
- //确定最后的"\"位置,以此获取不含路径的文件名
- int start = pathSrc.lastIndexOf('\\');
- //获取不含路径的文件名
- String fileName = pathSrc.substring(start + 1);
- File pathDest = new File(uploadDir, fileName); //构建目标文件对象
- fitem.write(pathDest); //将文件保存到服务器上
- }
- catch (Exception e)
- {
- out.println("存储文件时出现如下问题:");
- e.printStackTrace(out);
- return;
- }
- finally //总是立即删除保存表单字段内容的临时文件
- {
- fitem.delete();
- }
- }
- response.sendRedirect("../test/fileupload_list.jsp");
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException{
- doGet(request,response);
- }
- public void init() throws ServletException {
- }
- }
- <servlet>
- <servlet-name>FileUploadServletservlet-name>
- <servlet-class>servlettest.FileUploadServletservlet-class>
- servlet>
- <servlet-mapping>
- <servlet-name>FileUploadServletservlet-name>
- <url-pattern>/servlet/FileUploadServleturl-pattern>
- servlet-mapping>
- <%@ page language="java"%>
- <%@ page contentType="text/html;charset=gb2312"%>
- <html>
- <head><title>文件上传title>head>
- <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="40"
- marginwidth="0" marginheight="0">
- <center><h1>文件上传h1>
- <form name="uploadform" method="POST" action="..\servlet\FileUploadServlet"
- ENCTYPE="multipart/form-data">
- <table border="3" width="450" cellpadding="4"
- cellspacing="2" bordercolor="#9BD7FF">
- <tr> <td colspan="2">
- 文件 1:<input type="file" name="file1" size="40">td>tr>
- <tr> <td colspan="2">
- 文件 2:<input type="file" name="file2" size="40">td>tr>
- <tr> <td colspan="2">
- 文件 3:<input type="file" name="file3" size="40">td>tr>
- table><br><br>
- <table>
- <tr> <td ALIGN=“CENTER”>
- <input type="submit" name="submit" value="开始上传"/>td>tr>
- table>
- form>center>
- body>
- html>
- <%@ page contentType="text/html; charset=GB2312" import="java.io.*" %>
- <html>
- <head> <title>文件目录title>head>
- <body>
- <font size=4 color=red>已上传的文件目录列表font><br>
- <font size=5 color=blue>
- <%
- String path = "d: /upfile";
- File fl = new File(path);
- File filelist[] = fl.listFiles();
- out.println("服务器上上传文件的保存路径:"+path+"<br><br>");
- for(int i=0; i < filelist.length; i++)
- {
- out.println((i+1)+":"+filelist[i].getName()+" <br>");
- //如果是图片文件,可用以下语句显示图片。
- //out.println("<img src=images\\"+filelist[i].getName()+"><br><br>");
- }
- %>
- body>
- html>

