zoukankan      html  css  js  c++  java
  • ajax文件上传;post方式getparameter获取不到值;getReader取值方法

    post方式进行文件上传的时候,servlet会出现getparameter获取到的值为null;这时候通过比较发现只有在文件的二进制大小超过一定的大小的情况下会出现这种情况;
    通过翻阅治疗发现这种现象产生的原因是servlet的编码发生发生了改变
    1、Content-Type="application/x-www-form-urlencoded"是默认的编码方式
    2、Content-Type="multipart/form-data"

    第一种方式是默认的也是和parameter方法匹配的编码方式;当文件比较小的时候采用的是这种方式;所以后台可以通过getparameter获取到值;
    如果大小超过了限制编码就会转换为第二种方式,这种情况下用getparameter就获取不到值了;
    可选选择用getReader取值;并且该方法对上面两种编码方式都适用

    BufferedReader reader = request.getReader();
            String s;
            StringBuffer sb = new StringBuffer();
            while ((s = reader.readLine()) != null) {
                s = URLDecoder.decode(s, "UTF-8");//解码
                sb.append(s);
            }
            String sbStr = sb.toString();
          //封装到map中
            Map<String, Object> map = transStringToMap(sbStr, "&", "=");
            for (String key : map.keySet()) {
            
                // System.out.println("key:" + key + ", value:" + map.get(key));
            }

    这里需要注意的是getParameter、getInputStream和getReader是互斥的,当流被其中一种方式读取后可能字节发生了改变,这时候用另外一种方法无论如何都获取不到的!

    附url的解码说明:https://www.cnblogs.com/404code/p/10000278.html

    将url封装到Map中的方法:https://www.cnblogs.com/404code/p/10018522.html

  • 相关阅读:
    Vue日期转化
    javascript数组去重
    javascript数组及类数组详解
    javascript的argument和克隆方法详解
    javascript中对this的理解
    javascript命名空间及对象枚举的理解
    javascript继承模式详解
    javascript的call和apply区别
    javascript原型及原型链详解
    javascript对象及包装类
  • 原文地址:https://www.cnblogs.com/404code/p/10018533.html
Copyright © 2011-2022 走看看