• java学习笔记 (7) —— 实现简单的上传处理


    1、下载apache 的 commons-fileupload.jar 包及 commons-io.jar

    2、引入到lib 文件夹下

    3、新建uploadApache.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
      </head>
      
      <body>
      <!-- 20 min!!! -->
            <form action="/testStruts2/UploadServlet" method="post" enctype="multipart/form-data">
                username: <input type="text" name="username"/>
                password: <input type="password" name="password" />
                
                file1: <input type="file" name="file1" /><br>
                file2: <input type="file" name="file2" /><br>
                
                <input type="submit" value="submit">
            </form>
      </body>
    </html>

    4、新建resultApache.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
      </head>
      
      <body>
            username : ${requestScope.username}
            password: ${requestScope.password }
            file1:${requestScope.file1 }
            file2:${requestScope.file2 } 
      </body>
    </html>

    5、修改web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.test.servlet.UploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/UploadServlet</url-pattern> </servlet-mapping> </web-app>

    5、新建UploadServlet.java

    package com.test.servlet;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    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 UploadServlet extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        @SuppressWarnings("deprecation")
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //定义一个工厂类
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //获取当前站点目录下upload的路径
            String path = request.getRealPath("/upload");
            //设置文件暂存路径
            factory.setRepository(new File(path));
            //设置允许放在内存中的最大空间
            factory.setSizeThreshold(1024*1024);
            
            ServletFileUpload upload = new ServletFileUpload(factory);
            
            try{
                //uploadApache.jsp 有多个文本框,传入的是一组文件,因此通过LIST 处理
                List<FileItem> list = upload.parseRequest(request);
                //循环
                for (FileItem item : list) {
                    //如果是一般的字段,直接放入request中
                    if(item.isFormField()){
                        String name = item.getFieldName();
                        String value = item.getString("gbk");
                        request.setAttribute(name, value);
                    //如果是文件类型的字段,则需要进行处理
                    }else {
                        
                        String name = item.getFieldName();
                        //file 类型表单
                        String value = item.getName();
                        int start = value.lastIndexOf("\");
                        //截取最后的文件名
                        String fileName = value.substring(start+1);
                        //在request中保存内容,用于前台获取
                        request.setAttribute(name, fileName);
                        //一句话也可以概括 
                        //item.write(new File(path,fileName));
                        //定义输出流,输出路径及文件名称
                        OutputStream os = new FileOutputStream(new File(path,fileName));
                        //定义输入流,并获取单个的输入流内容
                        InputStream is = item.getInputStream();
                        //定义字节流以获取输入流内容
                        byte[] buffer = new byte[400];
                        int length = 0;
                        while ((length = is.read(buffer)) > 0) {
                            os.write(buffer,0,length);
                        }
                        os.close();
                        is.close();
                    }
                }
                request.getRequestDispatcher("upload/resultApache.jsp");
                
            }catch (Exception e) {
                e.printStackTrace();
            }    
        }
    
    }
  • 相关阅读:
    3年度研发项目情况项目目标文档
    2系统利益相关者描述案例
    讨论结果
    本学期《软件需求分析》需要掌握的内容(个人总结)
    第二周进度条
    四则运算
    第一周进度记录
    java web
    ke tang zuo ye
    2015-05-26 随笔
  • 原文地址:https://www.cnblogs.com/cklovefan/p/5255556.html
Copyright © 2020-2023  润新知