zoukankan      html  css  js  c++  java
  • 上传文件的表单

    1、使用Apache 的 Commons FileUpload

          FileUpload下载地址:

      http://commons.apache.org/fileupload/

      下载:commons-fileupload-1.2.2-bin.zip    得到:commons-fileupload-1.2.2.jar

      http://commons.apache.org/io/

      下载:commons-io-1.4-bin.zip       得到:commons-io-1.4.jar

    2、web.xml配置上传的文件所在的文件夹名称uploads,同时要在webroot下新建这个文件夹uploads

    <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>up</servlet-name>
        <servlet-class>test.up</servlet-class>
       <!--一组键值对。设置初始化参数-->
        <init-param>
         <param-name>savePath</param-name>
         <param-value>uploads</param-value>
        </init-param>
      </servlet>

    3、表单

    <form method="POST" enctype="multipart/form-data" action="./servlet/up">
      File to upload: <input type="file" name="upfile"><br/>
      Notes about the file: <input type="text" name="note"><br/>
      <br/>
      <input type="submit" value="Press"> to upload the file!
    </form>

    4、servlet

    注意init();

    package test;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    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 up extends HttpServlet {
        private ServletContext sc;
        private String savePath;
    
        /**
         * Constructor of the object.
         */
        public up() {
            super();
        }
    
        /**
         * Destruction of the servlet. <br>
         */
        public void destroy() {
            super.destroy(); // Just puts "destroy" string in log
            // Put your code here
        }
    
        /**
         * The doGet method of the servlet. <br>
         * 
         * This method is called when a form has its tag value method equals to get.
         * 
         * @param request
         *            the request send by the client to the server
         * @param response
         *            the response send by the server to the client
         * @throws ServletException
         *             if an error occurred
         * @throws IOException
         *             if an error occurred
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            doPost(request, response);
        }
    
        /**
         * The doPost method of the servlet. <br>
         * 
         * This method is called when a form has its tag value method equals to
         * post.
         * 
         * @param request
         *            the request send by the client to the server
         * @param response
         *            the response send by the server to the client
         * @throws ServletException
         *             if an error occurred
         * @throws IOException
         *             if an error occurred
         */
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            request.setCharacterEncoding("UTF-8");
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            try {
                List<FileItem> items = upload.parseRequest(request);
                for(FileItem item:items) {
                    // 判断是否普通的表单数据
                    if (item.isFormField()) {
                        System.out.println("表单参数名:" + item.getFieldName()
                                + ",表单参数值:" + item.getString("UTF-8"));
                    } else {
                        if (item.getName() != null && !item.getName().equals("")) {
                            System.out.println("上传文件的大小:" + item.getSize());
                            System.out.println("上传文件的类型:" + item.getContentType());
                            // item.getName()返回上传文件在客户端的完整路径名称
                            System.out.println("上传文件的名称:" + item.getName());
    
                            File tempFile = new File(item.getName());
                            // 上传文件的保存路径
                            File file = new File(sc.getRealPath("/") + savePath,
                                    tempFile.getName());
                            item.write(file);
                            request.setAttribute("upload.message", "上传文件成功!");
                        } else {
                            request.setAttribute("upload.message", "没有选择上传文件!");
                        }
                    }
                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
                request.setAttribute("upload.message", "上传文件失败!");
            }
            request.getRequestDispatcher("/rs.jsp").forward(request, response);
        }
    
        /*
         * 会被自动执行 参数ServletConfig,即在web.xml中配置的信息
         */
        public void init(ServletConfig config) {
            // 在web.xml中设置的一个初始化参数
            savePath = config.getInitParameter("savePath");
            sc = config.getServletContext();
        }
    
    }

    Done

  • 相关阅读:
    万字攻略,详解腾讯面试
    百度广告产品系统级测试技术演进
    TAR部署MYSQL(1)
    RPM部署MYSQL
    大数据学习之Linux(3)
    大数据学习之linux(2)
    大数据学习之linux(1)
    pycharm安装与破解
    Dijkstra—校园景点游览问题
    哈夫曼编译码器
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3744119.html
Copyright © 2011-2022 走看看