项目场景:
公司老系统中使用uploadify.js来实现动态上传文件功能,uploadify是使用flash插件来实现上传的。
问题描述
由于浏览器的更新换代,主流的IE、谷歌、火狐和360等浏览器已经不支持flash插件了,导致点击上传按钮时,报updateSettings is not a function。
解决方案:
我们使用aForm.AA.files[0]方法获取附件信息。
修改前代码
<form name="aForm "method="post">
<table>
<tr>
<th> 上传附件:</th>
<td> <input type="file" NAME="AA" ContentEditable="false"/>
</td>
</tr>
</tbale>
</form>
$j("#AA").uploadify({
'uploader':'<%=request.getContextPath()%>/js/uploadify.swf',
'script':'<%=request.getContextPath()%>/AExecUp.jsp',
'cancelImg':'<%=request.getContextPath()%>/js/cancel.png',
'buttonText':'浏览',
'hideButton':false,
'fileExt':'<%=afonm.getSwitchFileExt()%>',
'fileDesc':'<%=aform.getFileExt()%>',
'sizeLimit':1024*1024*<%=aform.getFileSizeLimit()%>
'auto': false,
"onComplete':function(event,queueID,file0bj, response, data){
var json =eval("("+response +")");
if(json.info.message!=''){
callbackFun(json.info.message);
}else{
refTableDataFun(json.info.liststr);
//清空错误提示信息
callbackFun('');
}
});
修改后代码
<form name="aForm "method="post">
<table>
<tr>
<th> 上传附件:</th>
<td> <input type="file" NAME="AA" ContentEditable="false"/>
</td>
</tr>
</tbale>
</form>
function toNextUp(){
if(IsNull(cTrim(aForm.AA.value,0))==false){
var formData = new FormData();
//最重要的一句代码:加载上传文件内容
formData.append("AA", annexForm.AA.files[0]);
//以下可以拼接其他参数
formData.append("userid",'<%=userid %>');
formData.append("参数",'1');
formData.append("参数",'1');
$.ajax({
type:"post",
data: formData,
//调用保存的方法
url:"<%=request.getContextPath() %>/a.jsp",
//jQuery不会设置Content-Type请求头
contentType:false,
//阻止jQuery自动将发送的数据序列化为字符串
processData:false,
success:function(data){
var json = eval("("+ data +")");
if(json.info.message!=''){
//error
callbackFun(data.info.message);
}else{
//刷新附件展示
refTableFun(json.info.listStr);
//清空错误提示信息
callbackFun('');
document.getElementById("msg").innerHTML ="";
}
}
})
}else{
alert("请选择需要上传的文件");
}
}
这样配合后端进行保存方法即可实现该功能。