jquery.form.js IE下异步提交文件的问题解决办法

时间:2021-08-03 04:06:02

问题一:后台接收到不上传的文件

jquery版本: 使用的jquery.form.js版本3.28.0

var ajaxFormOpt = {
url:’dispatchAction!saveFinishSummary.action?v=’+Math.random(),
type:’post’,
dataType:’json’,
success:function(responseText , statusText, xhr, form){
alert(“.”);
fileUpload = true;
},
error:function(){
}
};
//将表单设为ajax表单
$(“#form1”).ajaxForm(ajaxFormOpt);
// 绑定表单提交事件处理器
$(‘#form1’).submit(function() {
$(this).ajaxSubmit();
return false;// 为了防止普通浏览器进行表单提交返回false
});
$(‘#form’).submit();//提交表单

页面form表单,过程中遇到,在ie中必须在form指定action,否则提交时没有任何反应。在IE下测试,此处暂且指定action。

<form id="dispatch_finish_form" action="dispatchAction!saveFinishSummary.action" >          
<input type="file" id="attachmentFile" name="attachmentFile" onchange="chooseFile()" />
</form>

后台接收文件部分代码:

private File[] attachmentFile;
private String[] attachmentFileFileName;
public File[] getAttachmentFile() {
return attachmentFile;
}
public void setAttachmentFile(File[] attachmentFile) {
this.attachmentFile = attachmentFile;
}
public String[] getAttachmentFileFileName() {
return attachmentFileFileName;
}
public void setAttachmentFileFileName(String[] attachmentFileFileName) {
this.attachmentFileFileName = attachmentFileFileName;
}

jquery.form.js IE下异步提交文件的问题解决办法
明明上传的是文件,但后台去调用set方法时参数却是String类型,导致找不到该方法而抛出异常。

这是第一个问题,解决办法,直接更新jquery.form版本到3.49就解决了。
下载位置
http://www.bootcdn.cn/jquery.form/

问题二:IE8下上传成功了,却弹出文件下载弹框。

通常情况下,我们ajax请求内容返回都是采用通用的写法,返回application/json数据格式,这种数据格式就导致在IE8下提示下载。
解决办法:针对ajaxForm表单提交,指定返回的数据格式text/html。

response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type", "text/html");
response.getWriter().write("返回内容");