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

转载于:https://www.cnblogs.com/404code/p/10018533.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值