zoukankan      html  css  js  c++  java
  • 文件上传及文件大小限制_学习笔记

    文件的上传主要分成两个步骤:

     1.用户在页面中选择要上传的文件,然后将请求提交到Servlet

     2.Servlet收到请求,解析用户上传的文件,然后将文件存储到服务器

     

     以下内容需要注意

     

    1. 表单的method属性必须为post

     

    2. 表单enctype属性必须为multipart/form-data

     

    3.上传文件的控件是intput,type属性为file

    编写Servelet

    页面的表单控件创建好以后,选中文件点击上传按钮请求将会提交到指定的Servlet来处理

    注意:这里不能再以前的Servlet中那样,通过request.getParamter()获取请求参数了,当enctype="multipart/form-data" 时,再使用getParamter()获取到内容永远为空因为浏览器发送请求的方式已经改变

    既然以前的方法不能使用了,这里我们必须要引入一个新的工具来解析请求中的参数和文件,这个工具就是commons-fileupload。

    下面是我写的一个上传图片到.metadata.pluginsorg.eclipse.wst.server.core mp0wtpwebappsjsonupload文件的servlet代码

    public class AServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload fileUpload =new ServletFileUpload(factory);
            fileUpload.setFileSizeMax(1024*100);
            ServletContext servletContext= request.getServletContext();
            String realPath =servletContext.getRealPath("/upload");
            File file =new File(realPath);
            if(file.exists()){
                file.mkdir();
            }
            try {
                List<FileItem> fileList = fileUpload.parseRequest(request);
                for(FileItem item:fileList){
                    if(item.isFormField()){
                        String name =item.getFieldName();
                        String value =item.getString("utf8");
                        System.out.println(name+value);
                    }
                    else {
                        long size =item.getSize();
                        String name = item.getName();
                        System.out.println(size);
                        try {
                            item.write(new File(realPath+"\"+name));
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

    限制单个文件大小:

    限制总文件的大小:

    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>
        <form action="${pageContext.request.contextPath}/AServlet" method="post" enctype="multipart/form-data" >
            用户:<input type="text" name="username"/><br>
            <input type="file" name="photo"/><br>
            <input type="file" name="photo1"/><br>
            <input type="file" name="photo2"/><br>
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>

    需要注意的是:

     

  • 相关阅读:
    vue 数字滚动的插件 vue-count-to
    ASP.NET Core EF 查询获取导航属性值,使用Include封装
    nginx在asp.net mvc项目中 配置 初步快速入门
    JQuery EasyUI 扩展方法 日期控件 设置时间段函数
    JQueryEasyUI easyui-combobox 单击文本区域显示下拉菜单
    Jquery Easy UI Datagrid 上下移动批量保存数据
    ASP.NET MVC BundleConfig介绍和使用
    ASP.NET MVC5 视图相关学习
    SqlDependency数据库同步+signalr 推送消息
    T4 模板自动生成带注释的实体类文件
  • 原文地址:https://www.cnblogs.com/mki-mki/p/7388589.html
Copyright © 2011-2022 走看看