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

    需要两个jar包

    commons-fileupload-1.2.2.jar与commons-io-2.4.jar

    表单格式必须为

    <form action="fileupload.jsp" method="post" enctype="multipart/form-data">

    一个接受文件的例子

    <%@page import="java.io.File"%>
    <%@page import="org.apache.commons.fileupload.FileItem"%>
    <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
    <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'fileupload.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
        <%
            request.setCharacterEncoding("utf-8");
            String uploadpath="d:/upload";
            //File folder=new File("upload");
            DiskFileItemFactory factory= new DiskFileItemFactory();
            factory.setSizeThreshold(30*1024);
            factory.setRepository(factory.getRepository());
            ServletFileUpload upload=new ServletFileUpload(factory);
            int maxsize=5*1024*1024;
            List list=upload.parseRequest(request);
            Iterator iterator=list.iterator();
            while(iterator.hasNext()){
                FileItem item=(FileItem)iterator.next();
                if(!item.isFormField()){
                    String filePath=item.getName();
                    if(filePath!=null){
                        File filename=new File(item.getName()); 
                    }
                    if(item.getSize()>maxsize){
                        out.print("文件太大 ,不得超过5M");
                        break;
                    }
                    File saveFile=new File(uploadpath,filePath);
                    item.write(saveFile);
                    out.print("文件上传成功 ");
                    
                }
                response.sendRedirect("success.jsp");
                
            }
            
         %>
      </body>
    </html>

     禁止上传指定类型文件:

    <%@page import="org.apache.commons.io.filefilter.SuffixFileFilter"%>
    <%@page import="java.io.File"%>
    <%@page import="org.apache.commons.fileupload.FileItem"%>
    <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
    <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'fileupload.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
        <%
            request.setCharacterEncoding("utf-8");
            String uploadpath="d:/upload";
            //File folder=new File("upload");
            DiskFileItemFactory factory= new DiskFileItemFactory();
            factory.setSizeThreshold(30*1024);
            factory.setRepository(factory.getRepository());
            ServletFileUpload upload=new ServletFileUpload(factory);
            int maxsize=5*1024*1024;
            List list=upload.parseRequest(request);
            
            String[] limit = new String[]{".exe", "dat"};
            SuffixFileFilter filter = new SuffixFileFilter(limit);
            
            Iterator iterator=list.iterator();
            while(iterator.hasNext()){
                FileItem item=(FileItem)iterator.next();
                if(!item.isFormField()){
                    String filePath=item.getName();
                    if(filePath!=null){
                        File filename=new File(item.getName()); 
                    }
                    if(item.getSize()>maxsize){
                        out.print("文件太大 ,不得超过5M");
                        break;
                    }
                    File saveFile=new File(uploadpath,filePath);
                    boolean flag = filter.accept(saveFile);
                    if(flag){
                        out.print("error");
                        break;
                    }else{
                        item.write(saveFile);
                        out.print("文件上传成功 ");
                    };
                    
                }
                response.sendRedirect("success.jsp");
                
            }
            
         %>
      </body>
    </html>

    对于form表单的属性enctype,通常使用默认值application/x-www-form-urlencoded,这样可以通过request对象的getParameter()方法获取表单元素值,但是在文件域中将表单的enctype属性设置成了multipart/form-data,这样通过getParameter()方法就无法获取了。

    下面介绍一个实例

    上传页面

    <%
              Date now = new Date();
              String time = String.format("%tF", now);
           %>
        <form action="fileupload.jsp" method="post" enctype="multipart/form-data">
            选择文档<input type="file" name="file1" size="20">
            上传者<input type="text" name="name" size="20">
            文档名称<input type="text" name="filenames" size="20">
            上传时间<input type="text" name="upTime" value="<%=time %>">
            <input type="submit" value="提交"/>
        </form>

    处理页面

    <%
            String name=null, filenames=null, upTime=null,meg=null;
            request.setCharacterEncoding("utf-8");
            String uploadpath = "d:/upload";
            DiskFileItemFactory factory = new DiskFileItemFactory();
            factory.setSizeThreshold(30*1024);
            factory.setRepository(factory.getRepository());
            ServletFileUpload upload = new ServletFileUpload(factory);
            int maxsize = 5*1024*1024;
            List list = upload.parseRequest(request);
            Iterator iterator = list.iterator();
            while(iterator.hasNext()){
                FileItem item = (FileItem) iterator.next();
                if(!item.isFormField()){
                    String filePath = item.getName();
                    if(filePath!=null){
                        File filename = new File(item.getName());
                    }
                    if(item.getSize()>maxsize){
                        meg="too big";
                        break;
                    }
                    File saveFile = new File(uploadpath, filePath);
                    item.write(saveFile);
                    meg="success";
                }else{
                    String formName = item.getFieldName();
                    String formcon = item.getString("utf-8");
                    if(formName.equals("name")){
                        name = formcon;
                    }    
                    else if(formName.equals("filenames")){
                        filenames = formcon;
                    }
                    else if(formName.equals("upTime")){
                        upTime = formcon;
                    }
                }
            }    
            request.setAttribute("meg", meg);
            request.setAttribute("name", name);
            request.setAttribute("filenames", filenames);
            request.setAttribute("uptime", upTime);
            request.getRequestDispatcher("success.jsp").forward(request, response);
         %>

    成功页面

    <body>
            ${requestScope.meg }
            ${requestScope.name }
            ${requestScope.filenames }
            ${requestScope.uptime }
      </body>
  • 相关阅读:
    7.12
    Powerdesigner使用方法
    数据库中float类型字段,转化到前端显示,统一保留两位小数
    【1】直接插入排序
    KMP算法
    ssm框架下web项目,web.xml配置文件的作用
    客户要求输入框要记录下上一次输入的内容
    tomcat启动闪退
    页面第一次加载,JS没有效果,刷新一下就好了
    机器学习,安装python的支持包
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4345536.html
Copyright © 2011-2022 走看看