ajax的post提交参数长度超出限制的解决办法

本文探讨了在进行大文件POST提交时遇到的问题及解决方案,包括调整服务器设置、使用FormData发送Blob对象等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考网站 https://segmentfault.com/a/1190000000754560

var imgData = $("img").toDataURL();
$.post(url,{imgData:imgData},function(){
})

这是一个 图片的base64编码字符串的post提交,

一般的图片base64都可以提交

只有某一个由于字符串较长所以,提交失败。

post的数据大小在3M以上,查阅网上资料说,最大可以提交2M,也有说post提交无限制,是服务器的设置问题。

尝试一、修改服务器的maxPostSize=0,没有网上描述的效果。

感谢@x201509指出maxPostSize设置:

maxPostSize设置为0是没有效果的,设置为一个指定大小是有效果的,如设置为8M大小。maxPostSize="8000000"。测试有效!

尝试二、还有一种办法,post请求json, data : "{xxxx"+xxxx"}";这类提交后台

最后通过request.getReader()来获取流信息,解析还原

这个方法能够解析到,但是仍然解析的不全,只能获取了传递的一半左右的数据.

尝试三、最后使用了这个办法成功解决。

img=img.split(',')[1];
img=window.atob(img);
var ia = new Uint8Array(img.length);
for (var i = 0; i < img.length; i++) {
  ia[i] = img.charCodeAt(i);
};
var blob=new Blob([ia], {type:"image/png"});
var formdata=new FormData();
formdata.append('file',blob);
$.ajax({
  url : url,
  data :  formdata,
  processData : false, 
  contentType : false, 
  dataType: 'json',
  type : "POST",
  success : function(data){}
});

其他类似的超出最大限制的问题,也可以尝试这一类做法。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lizhejin1209

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值