ITPub博客

首页 > Linux操作系统 > Linux操作系统 > commons-fileupload.jar实现文件上传

commons-fileupload.jar实现文件上传

原创 Linux操作系统 作者:xinglongjian 时间:2009-12-04 15:50:20 0 删除 编辑

第一步:

创建页面文件

<%@ page language="java" pageEncoding="gbk"%>

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <%@include file="/header.jsp"%>

    <title>文件上传title>

  head>

  <body>

    <h2>使用commons-fileupload上传文件h2>

     <hr/>

    <form action="<%=basePath%>fileupload.do" method="post"

           enctype="multipart/form-data">

       <table>

         <tr>

           <td>请选择要上传的文件td>

           <td>

              <input type="file" name="filepath" size="20"/>

           td>

         tr>

         <tr>

            <td>

              <input type="submit" value="上传"/>

            td>

         tr>

        table>

    form>

  body>

html>

第二步:Web.xml

上面action中的fileupload.do是一个servlet,不是Struts的action,在web.xml中添加servlet配置如下:

<servlet>

   <servlet-name>FileUploadServletservlet-name>

   <servlet-class>

            com.xinglongjian.struts.fileupload.FileUploadServlet

   servlet-class>

servlet>

   <servlet-mapping>

      <servlet-name>FileUploadServletservlet-name>

      <url-pattern>/fileupload.dourl-pattern>

servlet-mapping>

第三步:编写上传类FileUploadServlet.java

此类是一个servlet,继承自HttpServlet

package com.xinglongjian.struts.fileupload;

 

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.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

 

public class FileUploadServlet extends HttpServlet

{

   private static final long serialVersionUID = 1L;

 

   @Override

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

   {

      request.setCharacterEncoding("gbk");//防止中文乱码

      String realPath=this.getServletContext().getRealPath("/fileload");//需要存放的真实路径

      boolean isMultipart=ServletFileUpload.isMultipartContent(request);

      if(!isMultipart)

        return ;

      DiskFileItemFactory factory=new DiskFileItemFactory();

      ServletFileUpload upload=new ServletFileUpload(factory);

      upload.setFileSizeMax(1024*1024);//the max size of the upload file

      List items=null;

      try

      {

        items=upload.parseRequest(request);

      }

      catch (FileUploadException e)

      {

        e.printStackTrace();

      }

     

      for(FileItem item:items)

      {

         if(!item.isFormField())

        {

           File fullFile=new File(item.getName());

           File uploadFile=new File(realPath,fullFile.getName());

           try

           {

              item.write(uploadFile);

           }

           catch (Exception e)

           {

              e.printStackTrace();

           }

        }

      }

      request.getRequestDispatcher("/struts/success.jsp").forward(request, response);

   }

}

 

该Servlet包含一个doPost(request,response)的方法,客户端以post的方式发出请求时 就出进入doPost方法进行处理。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7464531/viewspace-621663/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-09-25

  • 博文量
    7
  • 访问量
    19756