jsp页面代码
上传完成后调用的方法
至此问题解决
$("#uploadify").uploadify({
'swf' : "${pageContext.request.contextPath}/static/js/uploadify/uploadify.swf",
'uploader' : '${pageContext.request.contextPath}/document/uploadFile',
'queueId' : "fileQueue",
'queueSizeLimit' : 100,//限制上传文件的数量
'fileTypeDesc' : '压缩文件', //可选择文件类型说明
'auto' : false,
'removeCompleted':true,
"removeTimeout": 0,
'fileSizeLimit':307200,//上传文件大小
'multi' : true,//是否允许多文件上传
'method' :'post',
'width' : '65', //按钮宽度
'height' : '18', //按钮高度
'simUploadLimit': 1,//同时运行上传的进程数量
'buttonText': "选择文件",
'fileObjName' : 'uploadFile',
'onFallback':function(){
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},
'onUploadStart' : function(file) {
$("#uploadify").uploadify("settings", "formData", {'id' : $("#updateDocId").val(),"docTitle": $("#docTitle").val(),"docTag":$('#docTag').combobox('getText'),"imgNum":imgs});
},
'onQueueComplete' : function (queueData){
//tag += 1;
//$.messager.alert("通知","上传成功"+queueData.uploadsSuccessful +"上传失败"+queueData.uploadsErrored,"info" );
//关闭对话框
closeFileUploadWindow();
//刷新数据
//调用子页面的方法,刷新doclist
myFrame.window.flushData()
//调用队列上传成功后的方法
uploadSuccess();
//清空缓存中后台传的错误信息
errorMsg = "";
//清空缓存中后台传的成功信息
successMsg = "";
//上传文件总数赋初值
imgs=0;
},
'onUploadSuccess' : function(file, data, response){
if(data.indexOf("flag") >= 0){
uploadComplete++;
}
if(data.indexOf("msg") >= 0 && data.indexOf("flag") < 0){
errorMsg += "错误文件名:"+file.name +",错误信息:"+ data.substring(data.indexOf("msg")+4,data.length-1)+";";
}
},
'onSelect':function(file){
//每选择一个文件就会触发
imgs++;
},
'onCancel':function(file){
imgs--;
},
});
上传完成后调用的方法
function uploadSuccess(){
if(errorMsg != "" ){
//alert("imgs"+imgs+",uploadComplete"+uploadComplete)
$.messager.alert("上传异常","上传失败"+(imgs-uploadComplete)+"文件,"+errorMsg);
uploadComplete=0;
}
}
后台接收方法
/**
* 新增文件或更新文件,根据有没有传文件ID值来区分
* @return
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
@Log(name="上传资料",model="资料管理",log="上传资料",field="上传资料,Text,无")
public void uploadFile(@RequestParam("uploadFile") CommonsMultipartFile file,HttpServletResponse response,HttpServletRequest request) {
//文档更新与添加的公共代码
response.setContentType("application/json; charset=UTF-8");
Map<String, String> map = new HashMap<String, String>();
String docTitle = request.getParameter("docTitle");
String docTag = request.getParameter("docTag");
String fileName = file.getOriginalFilename();
String isPush =request.getParameter("isPush");
String[] split = fileName.split("\\.");
......略
uplodify在火狐浏览器中会出现异常,原因是不能自动上传session,我用的是3.2.1版本,搜了很多天,网上都是在上传路径后面加一个jsessionid,但我的加过之后还是不行,花费了我很长时间,中间又换了其它的上传插件,webuploader,但这个插件不好用,上传按钮的焦点很难获取,上传个文件都费劲,所以又换回来了。查各种资料,最后突然灵光一现,想到了是我的拦截器搞的鬼,禁用之后果然好了。项目中用的是shiro框架,代码如下:
<!-- Shiro Filter -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManagerCas" />
<property name="loginUrl" value="/admin/index" />
<property name="successUrl" value="/" />
<property name="unauthorizedUrl" value="/error/403.jsp"/>
<property name="filters">
<util:map>
<entry key="forceLogout" value-ref="forceLogoutFilter"/>
<entry key="loginFilter" value-ref="loginFilter"/>
</util:map>
</property>
<property name="filterChainDefinitions">
<value>
/static/** = anon
/admin/index = anon
/user/toLogins = anon <!-- 后台管理页面登录 -->
/user/login = anon <!-- app端登录 -->
/user/getVimg = anon <!-- web获取验证码图片 -->
/document/uploadFile = anon <!-- 解决uploadify插件火狐不兼容的问题,不拦截该请求 -->
/** = loginFilter,authc,forceLogout
/logout = logout
</value>
</property>
</bean>
至此问题解决