Java解决火狐浏览器使用uploadify上传报错302以及报IO error错问题

来源:互联网 发布:wto贸易数据库 编辑:程序博客网 时间:2024/05/02 04:50

最近使用同时添加的上传控件uploadify,可以支持批量上传,但是控件是用Flash做的,在IE、360浏览器还好,但是在火狐浏览器出现了上传报错Http error 302,网上查询到是因为由于jquery uploadify是借助flash来实现上传的,每一次向后台发送数据流请求时,ie会自动把本地cookie存储捆绑在一起发送给服务器。但 firefox、chrome不会这样做,他们会认为这样不安全。在火狐浏览器下 uploadify 利用flash进行post上传时没有包含原来的session信息,而是重新创建了一个session,新的session无法通过登录验证,因此就会报错302。

网上说的解决办法是在uploader属性后面将session追加进去

;jsessionid=<%=session.getId()%>
,代码如下:

<input id="testFileInput" type="file" name="strFilePath"  uploaderOption="{swf:'${ctx}/static/styles/management/uploadify/scripts/uploadify.swf',   uploader:'${ctx}/common/uploadFile;jsessionid=<%=session.getId()%>',   formData:{id:'${task.id}', ajax:1},   queueID:'fileQueue',   buttonImage:'${ctx}/static/styles/management/uploadify/img/add.jpg',   buttonClass:'my-uploadify-button',   width:102,   auto:true,   removeCompleted:false  }"/>

但是我这样试过了还是解决不了问题,依然报错302.当时很是郁闷。

然后我还了一种思路,将session的值保存在页面中,然后在JavaScript中直接获取,这样一试,就成功了。

具体做法,我在导航栏总页面进行session的保存,

<input id="sessionId" type="hidden" value="${pageContext.session.id}"/>

然后在JavaScript中将其值获取

/** * 上传图片公共方法 * @param fileID 上传文件按钮的ID值 * @param imgID 上传后图片预览img的ID值 * @param nameValue uploadfile中bean属性的ID值,用于传入后台 * @param divShowId 之前隐藏的DIV用于显示图片的将其展示出来 */function uploadFileUtil(fileID,imgID,nameValue,divShowId){$("#"+fileID).uploadify({height        : 20,swf           :basePath+'/page/js/uploadify/uploadify.swf',uploader      :basePath+'/admin/product/upload.do;jsessionid=' + sessionId,buttonText:"选择文件",width         : 60,queueSizeLimit :1,'onUploadSuccess' : function(file, data, response) {//alert(data);var  mixed=data.split(",");var id=mixed[0];var  imgPath=mixed[1];$("#"+imgID).attr("src","/"+replaceImgURL(imgPath));/*    $(singlePicShow).append($("#singlePic")); */$("#"+nameValue).val(id);$("#" + divShowId).show();/* var img = $('#imgdiv1')img.attr('display:block') */}});}

这样就不保错了,如果更改后出现上传报错IO error的话,将火狐浏览器关掉,清空缓存,然后再打开试试,应该就好了。

1 1
原创粉丝点击