为什么在form中加了enctype="multipart/form-data"后, 后台还是取不到上传的file文件?在线等高手解释
异常:org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException:thereques...
异常:org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded; charset=UTF-8
展开
2个回答
展开全部
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,上传附件用到
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
enctype="multipart/form-data是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form- data,才能完整的传递文件数据,进行下面的操作.
别人的一个例子:
form中加入enctype="multipart/form-data"时整个表单被封装,字符将转成二进制流,因此request.getParameter("user_type")是得不到值的.给段实例做参考:
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.upload();
String strzy=su.getRequest().getParameter("user_type");
这样就行了
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,上传附件用到
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
enctype="multipart/form-data是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form- data,才能完整的传递文件数据,进行下面的操作.
别人的一个例子:
form中加入enctype="multipart/form-data"时整个表单被封装,字符将转成二进制流,因此request.getParameter("user_type")是得不到值的.给段实例做参考:
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.upload();
String strzy=su.getRequest().getParameter("user_type");
这样就行了
更多追问追答
追问
额 我不是在后台收不到页面表单值 是页面上传的图片文件 后台接收不到。。
追答
或者你重新做下
展开全部
你用的是 ajax 提交的吧, 设置成 enctype="multipart/form-data" 后用ajax提交会丢失表单中的信息,说白了提交的时候还是 键值对,即application/x-www-form-urlencoded; charset=UTF-8, 你用action 进行不同提交不会出现这种问题
用ajax 解决办法: 不要用表单序列,这样会丢失表单信息,用formData对象进行数据封装,作为ajax 中的data数据,传到后天。具体可以百度 formData 上传文件,教程多的是
原因跟思路以上,代码自己写
用ajax 解决办法: 不要用表单序列,这样会丢失表单信息,用formData对象进行数据封装,作为ajax 中的data数据,传到后天。具体可以百度 formData 上传文件,教程多的是
原因跟思路以上,代码自己写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询