zoukankan      html  css  js  c++  java
  • servlet请求消息体、文件的上传

    请求消息体

    请求的消息体可以是文本,也可以是二进制

    普通文本消息体

        String value = req.getParameter("参数名");
        //参数名包含:
            //超链接对应的是?号好后面的参数名
            //对于表单的话,参数为 表单控件中 name的值
        //getParameter("参数名");函数可以处理超链接、表单输入框、单选框、单选下拉菜单、文本域
    
        String[] values = req.getParameterValues("name值");
        //getParameterValues("name值");函数处理表单中的复选框、多选下拉菜单

    二进制消息体

        //获得文件对象的part
            Part part = request.getPart("photo");
        //获得该文件对象的文件名
            String fileName = part.getSubmittedFileName();
    
        //getParameter 当进行二进制传输数据的时候  该方法不能获得输入框中的值。
        //添加了@MultipartConfig注解后 ,使用getParameter方法,文本与二进制没有区别

    上传文件

    文件操作-客户端的设置

    1. 提交方式为post

    2. enctype="multipart/form-date"(enctype规定表单数据在发送到服务器之前应该如何编码)

    文件上传的第一步

    1. 设置form的提交方式为 post 编码方式为 enctype="multipart/form-data"

    2. 书写处理文件上传的servlet. 并且告诉web容器该servlet可以进行文件处理。

    3. 分别获取每个表单元素的值(part)

    //获得文件对象的part
        Part part = request.getPart("photo");
    
    //获得该文件对象的文件名
        String fileName = part.getSubmittedFileName();
    
    //获得文件的后缀名
        String ext =fileName.substring(fileName.lastIndexOf("."));
    
    //获得uuid
        String uuid = UUID.randomUUID().toString();
    
    //获得新的文件名
        String newFileName = uuid+ext;
    
    //获得文件存放的地址
        String path = this.getServletContext().getRealPath("存放上传文件的文件夹");
    
    //创建一个文件对象
        File file = new File(path);
    
    //如果没有该imgs文件夹
        if(!file.exists()){
            file.mkdir();
        }
    
    //获得保存文件的路径
        String save_path =  path+File.separator+newFileName;
        //File.separator -> 系统生成的文件分隔符
    
    //上传文件
        part.write(save_path);

    其他

    1. 凡是从客户端传过来的都是字符串

  • 相关阅读:
    不能对同一张表先查询后更新的解决方案
    Maven的一些常用命令
    在sql中使用函数,遇到net.sf.jsqlparser.parser.ParseException异常
    2017年秋季遇到的兼容问题总结
    最近关于css样式重构的一点心得体会
    CSS Modules使用方法
    上传图片获取base64位编码
    移动端自适应莫名其妙撑开高度的问题
    解决ie8下页面刚出现时候的晃动问题
    解决ie8下面placeholder显示问题
  • 原文地址:https://www.cnblogs.com/-Archenemy-/p/12709969.html
Copyright © 2011-2022 走看看