zoukankan      html  css  js  c++  java
  • Rhythmk 一步一步学 JAVA (17):Servlet 文件上传

    1、环境 : JDK 1.6 , Tomcat 7.0

    2、第三方类库:

        commons-fileupload-1.3.1.jar

        commons-io-2.4.jar

    3、web.xml配置:

    <servlet>
            <servlet-name>FileUpload</servlet-name>
            <servlet-class>java02.rhythmk.com.FileUploadServlet</servlet-class>
    
            <init-param>
                <param-name>filepath</param-name>
                <param-value>uploadfile</param-value>
            </init-param>
            <init-param>
                <param-name>temppath</param-name>
                <param-value>temp</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>FileUpload</servlet-name>
            <url-pattern>/FileUpload.html</url-pattern>
        </servlet-mapping>

       4、 jsp :

         

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!-- enctype 默认是 application/x-www-form-urlencoded -->
         <form action="FileUpload.html" enctype="multipart/form-data" method="post" >
            
                   rhythmk::<input type="text" name="rhythmk"> <br/>
                   上传文件:<input type="file" name="file1"><br/>
    
                  <input type="submit" value="提交"/>
         
         </form>
    
    
    </body>
    </html>

      5、Servlet:

    package java02.rhythmk.com;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    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;
    
    /**
     * Servlet implementation class FileUploadServlet
     */
    @WebServlet("/FileUploadServlet")
    public class FileUploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        private static String filepath = "";
        private static String temp = "";
    
        /**
         * Default constructor.
         */
        public FileUploadServlet() {
            // TODO Auto-generated constructor stub
    
        }
    
        @Override
        public void init(ServletConfig config) throws ServletException {
            // TODO Auto-generated method stub
            super.init(config);
    
            if (filepath == "" || temp == "") {
                filepath = config.getInitParameter("filepath");
                temp = config.getInitParameter("temppath");
    
                ServletContext context = getServletContext();
                filepath = context.getRealPath(filepath);
                temp = context.getRealPath(temp);
    
                System.out.println("filepath:" + filepath + ",temp:" + temp);
            }
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
         *      response)
         */
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
         *      response)
         */
    
        protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
    
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
    
            try {
    
                DiskFileItemFactory foctory = new DiskFileItemFactory();
    
                // 设置临时文件
                foctory.setRepository(new File(temp));
                // 设置临时文件缓存区大小
                foctory.setSizeThreshold(1024 * 1024);
    
                ServletFileUpload sFileUpload = new ServletFileUpload(foctory);
    
                List<FileItem> list = (List<FileItem>) sFileUpload
                        .parseRequest(request);
    
                for (FileItem item : list) {
                    String name = item.getFieldName();
                    if (item.isFormField()) {
                        System.out.println("filedName:" + name + ",value:"
                                + item.getString());
    
                    } else {
    
                        String filename = item.getName();
    
                        System.out.println("value:" + filename);
    
                        if (filename.length() > 0) {
                            System.out.println("文件保存路径:" + filepath + "\"
                                    + filename);
    
                            File file = new File(filepath);
                            if (!file.exists()) {
                                file.mkdir();
                            }
    
                            // 保存文件
                            item.write(new File(filepath, filename));
    
                            response.getWriter().write(
                                    "文件保存路径:" + filepath + "\" + filename);
                        }
    
                    }
    
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
    }
  • 相关阅读:
    distroless 镜像介绍及调试基于distroless 镜像的容器
    C# 设置或验证 PDF中的文本域格式 E
    Java 在PDF中添加工具提示|ToolTip E
    MongoDB Security
    Spring Boot MongoDB
    MongoDB 安装
    nginx重试机制proxy_next_upstream
    (转)VC中等比例缩放图像
    5 Ways You can Learn Programming Faster
    如何批量去除文件名中的某些字符串?
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3590564.html
Copyright © 2011-2022 走看看