之前做了一个图片上传的功能,前端是把图片编码成BASE64,但是图片一大了,后台用request.getParameter("前端参数");来接收参数打印不出来,没有值,这就很尴尬了
 
然后一直觉得是前端POST没传过来,左思右想都觉得不应该,POST没有大小限制啊,
后来用debug查看,发现后台数据时传输过来了
 
原来request.getParameter("前端参数");是有大小限制,超过一定大小后就无法接受数据,后面改成用原始的方式来接收数据
 
        StringBuilder sb = new StringBuilder();
try (BufferedReader reader = request.getReader();) {
char[] buff = new char[1024*1024];
int len;
while ((len = reader.read(buff)) != -1) {
sb.append(buff, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
参数= this.splitString(sb.toString(), "参数=");
 
 
public String splitString(String str, String temp) {
String result = null;
if (str.indexOf(temp) != -1) {
if (str.substring(str.indexOf(temp)).indexOf("&") != -1) {
result = str.substring(str.indexOf(temp)).substring(str.substring(str.indexOf(temp)).indexOf("=") + 1,
str.substring(str.indexOf(temp)).indexOf("&")); } else {
result = str.substring(str.indexOf(temp)).substring(str.substring(str.indexOf(temp)).indexOf("=") + 1); }
}
return result;
}
 
这样写了过后发现参数还是无法接收,郁闷ing,然后让同事帮我看看,后面他看了半天说没什么问题啊,你试了什么图片,他一提醒,于是分别试了下大小图片,结果发现小图片转换后,用原始的方式又接收不到参数,于是后面又改了下
 
 
    String 参数= request.getParameter("参数"); //
if (判断参数是否为空) {
StringBuilder sb = new StringBuilder();
try (BufferedReader reader = request.getReader();) {
char[] buff = new char[1024*1024];
int len;
while ((len = reader.read(buff)) != -1) {
sb.append(buff, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
参数= this.splitString(sb.toString(), "参数=");
}
PS:但是我现在还不太确定这是不是非黑即白,大家请自测。
 
现在大小参数都能够接收了,但是我放到代码里进行解码却发现大图片解析过后图片不正确
然后我将大小的两种图片编码都进行了字符串截取,查看前30个字符,发现后者将传过来的数据再一次进行了编码,于是采用URLDecoder.decode(参数,"UTF-8");成功解决问题
 
    String 参数= request.getParameter("参数"); //
if (判断参数是否为空) {
StringBuilder sb = new StringBuilder();
try (BufferedReader reader = request.getReader();) {
char[] buff = new char[1024*1024];
int len;
while ((len = reader.read(buff)) != -1) {
sb.append(buff, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
参数 = this.splitString(sb.toString(), "参数=");
参数 = URLDecoder.decode(参数,"UTF-8");
}

欢迎大家加入QQ群一起交流

关于ajax post请求,参数过大产生的问题解决 Java的更多相关文章

  1. jsp get方式请求参数中包含中文乱码问题解决

    1. 自己接收到参数之后在后台进行转码处理 2: 修改tomcat的配置文件  server.xml <Connector port="8080" protocol=&quo ...

  2. JQuery Ajax 请求参数 List 集合处理

    引言 JQuery Ajax 发送请求参数一般都是基本类型,比如 String.int:那么,请求参数如果是 List 集合应该如何处理呢? 情况一:Aajx 发送 List 类型请求参数 举例如下: ...

  3. Struts2之Action接收请求参数和拦截器

    技术分析之在Struts2框架中使用Servlet的API        1. 在Action类中也可以获取到Servlet一些常用的API        * 需求:提供JSP的表单页面的数据,在Ac ...

  4. 16 SpringMVC 的请求参数的绑定与常用注解

    1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...

  5. 解决.NET Core Ajax请求后台传送参数过大请求失败问题

    解决.NET Core Ajax请求后台传送参数过大请求失败问题 今天在项目上遇到一个坑, 在.Net Core中通过ajax向mvc的controller传递对象时,控制器(controller)的 ...

  6. ajax请求参数为中文乱码的情况

    解决中文乱码问题的方法有很多. 一.前提是ajax请求传递参数对象到后台,对象中的某个参数的值为中文,到后台之后出现乱码,导致报错.问题解决如下: rest层: 二.在tomcat的server.xm ...

  7. ajax的请求,参数怎么管理?

    一般发送一条ajax 然后点击界面需要更改查询条件,第一种是做一个form表单比较合适的设计.更改了参数回收表单然后重新发送ajax: 还有一种是把参数缓存到变量中,然后更改了条件修改变量再次重发aj ...

  8. Ajax请求参数较长导致请求失败

    Ajax请求参数比较长,第5行参数大概1100个字符吧,是接口的请求报文. $.ajax({ type:"POST", url:"${ctx}/test.action?m ...

  9. SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析

    SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...

随机推荐

  1. 【Java基础】ArrayList工作原理

    ArrayList 以数组实现.节约空间,但数组有容量限制.超出限制时会增加50%容量,用System.arraycopy()复制到新的数组.因此最好能给出数组大小的预估值.默认第一次插入元素时创建大 ...

  2. Hibernate 迫切连接和普通连接的区别

    package com.baidu.test; import java.util.ArrayList;import java.util.LinkedHashSet;import java.util.L ...

  3. ycsb对hbase性能测试的研究

    ycsb对hbase性能测试 1.ycsb安装 下载ycsb软件 wget https://github.com/downloads/brianfrankcooper/YCSB/ycsb-0.1.4. ...

  4. C++类对象大小的计算

    (一)常规类大小计算 C++类对象计算需要考虑很多东西,如成员变量大小,内存对齐,是否有虚函数,是否有虚继承等.接下来,我将对此举例说明. 以下内存测试环境为Win7+VS2012,操作系统为32位 ...

  5. 基础篇系列,JAVA的并发包 - 锁

    JAVA中主要锁 synchronized Reentrantlock ReentrantReadWriteLock 问题引入 为什么需要锁? 为什么JAVA有了synchronize还需要Reent ...

  6. C# 在PDF中创建和填充域

    C# 在PDF中创建和填充域 众所周知,PDF文档通常是不能编辑和修改的.如果用户需要在PDF文档中签名或者填写其他内容时,就需要PDF文档中有可编辑的域.开发者也经常会遇到将数据以编程的方式填充到P ...

  7. ASP.NET MVC创建视图过程

    MvcHandler.ProcessRequest()   (1)获取Action执行结果:context2.Result ActionExecutedContext context2 = this. ...

  8. Chapter 3. Programming with RDDs

     Programming with RDDs This chapter introduces Spark's core abstraction for working with data, the r ...

  9. 关于数组和集合的冒泡排序中容易出现的IndexOutOfBoundsException

    数组只能存错一种相同的数据类型,集合只能存储引用数据类型(用泛型),集合的底层就是一个可变的数组. 数组的冒泡排序: public static void arrayMaxPaiXu(int[] ar ...

  10. 时间相关库<ctime>解析

    原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5649487.html 一.定义的类型 1.clock_t:时钟类型 2.size_t:unsign ...