最近在写java企业级开发作业时发现的一个问题: 就是form表单传值的时候 enctype的值设为了multipart/form-data,导致其他input标签的值后台无法获取,这里google了一下记录下来。
先来了解一下为什么会这样
一、application/x-www-form-urlencoded:
表单中的enctype值默认是application/x-www-form-urlencoded,它会将表单中的数据变为键值对的形式 1、action为get,则将表单数据编码加到url后面,中间用?分隔并且&将多个数据连在一起 2、action为post,form数据会被浏览器封装到request body中,然后发送到服务器。
二、text/plain:
表单以纯文本形式进行编码
三、multipart/form-data:
enctpyte设置为multipart/form-data。用于上传的含有非文本内容—图片、txt、MP3等 1、将表单中的数据变成二进制数据进行上传,所以这时候这时如果用request是无法直接获取到相应表单的值的,因为不是键值对噢
如何解决呢???
我采取的是用js代码将input标签中的内容拼接到url上
function formSubmit(){
var action="/img";
action+="?headline="+document.upload.headline.value+"&username="+document.upload.username.value;
alert(action);
document.upload.action=action;
document.upload.submit();
}
这样后台方面就可以用request接受了。