js 模拟POST提交enctype="multipart/form-data"类型的表单

以下是application/x-www-form-urlencoded;方式POST提交的代码varxmlHttp;functioncreatXMLHttpReques... 以下是application/x-www-form-urlencoded;方式POST提交的代码

var xmlHttp;
function creatXMLHttpRequest() {
if(window.ActiveXObject) {
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
} else if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function handleStateChange() {
if(xmlHttp.readyState == 1) {
$("jieguo").innerHTML = "<h2>载入中..请稍候...</h2>";
}
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
var allcon = xmlHttp.responseText;
$("r").innerHTML = allcon;
}
}
}
function chaxun(url){
queryString="do=do"
creatXMLHttpRequest();
xmlHttp.open("POST",url,"true");
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
//xmlHttp.setRequestHeader("contentType","text/html;charset=gb2312");
xmlHttp.send(queryString);
}

现在要JS模拟multipart/form-data; boundary=---------------------------的方式提交

以下是非JS提交数据抓包,希望能帮忙实现:
Content-Type: multipart/form-data; boundary=---------------------------7db8c30150364
Accept-Encoding: gzip, deflate
Host:************
Content-Length: 242
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ****************

-----------------------------7db8c30150364
Content-Disposition: form-data; name="polls[]"

27
-----------------------------7db8c30150364
Content-Disposition: form-data; name="polls[]"

37
-----------------------------7db8c30150364--
展开
 我来答
百度网友628d0d7e
高粉答主

2018-04-18 · 说的都是干货,快来关注
知道大有可为答主
回答量:300
采纳率:100%
帮助的人:11.5万
展开全部

只是需要文件上传才用它的

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");

改成

xmlHttp.setRequestHeader("Content-Type","multipart/form-data;")。

js模拟post提交的代码

通过js模拟post提交

1:请求需要的参数过长,超过get允许的最大长度

2:想要隐藏地址栏的参数

//新创建一个form表单

document.write('<form name=myForm></form>');   

var myForm=document.forms['myForm'];   

myForm.action='runEmpAttendance';   

myForm.method='POST';  

var input = document.createElement('input');

input.type = 'text';

input.name = 'userId';

input.value = 100;

myForm.appendChild(input);

myForm.submit();

//使用jsp中已经存在的form表单,添加其他的参数

var myForm = document.forms['listEmployee'];  //表单的name

var input = document.createElement('input');

input.type = 'hidden';

input.name = 'currentPage';

input.value = 1;

myForm.appendChild(input);

myForm.method= 'POST';

myForm.submit()。

latentguling
2011-12-05 · TA获得超过326个赞
知道小有建树答主
回答量:636
采纳率:0%
帮助的人:529万
展开全部
只是需要文件上传才用它的
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
改成
xmlHttp.setRequestHeader("Content-Type","multipart/form-data;");

至于发送二进制数据,你自己解决吧。
-----------------------------7db8c30150364 这个其实有规律的
就是一个开始段一个结束段,7db8c30150364 只是用一串不重复的字符,标识一起其中间的东西就是数据,Content-Disposition: form-data; name="polls[]" 这个是用来表示什么数据,文件名是啥。

其实在socket发包中,上传文件的时候就要这么用,有空研究一下HTTP里面POST 文件时,应该如何处理。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式