• 文件上传及文件大小限制_学习笔记


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

     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>

    需要注意的是:

     

  • 相关阅读:
    [js]vue-router的使用
    [js]递归实现 数组转树形
    [js]vue组件核心
    [js]了解chart绘图
    [js]vue权限控制
    [js]vue显示一个外部链接的组件
    [js]axios使用
    [js]vue中 给router-view 组件的 绑定 key 的原因
    [java]BeanPostProcessor使用及源码
    [java]权限管理
  • 原文地址:https://www.cnblogs.com/mki-mki/p/7388589.html
Copyright © 2020-2023  润新知