ajax的post提交參數長度超出限制的解決辦法
var imgData = $("img").toDataURL();
$.post(url,{imgData:imgData},function(){
})
這是一段提交圖片的代碼,一般的圖片base64都可以提交。有時候會遇到由於字符串較長所以,提交失敗。post的數據大小在3M以上,查閱網上資料說,最大可以提交2M,也有說post提交無限制,是服務器的設置問題。
解決方案一:
修改服務器的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){
}
});
解決方案四:
tomcat server.xml 發現設置了maxPostSize="1024" 這個參數
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="0"/>
<!--tomcat:默認大小2097152,當maxPostSize=0時,不限制;maxPostSize=20971520時,爲20M-->
————————————————