一、问题描述:

              项目整体运行正常,但挂上网络后一个月,客户来电说,(非IE浏览器访问下)图片上传功能失效——选择图片,点击上传按钮,进度条跑完了,但是预览图没有出现。

 

初步估计:1、图片预览功能出问题了; 2、上传功能出问题了;3、网络问题(上传图片,超时失败);4、操作出错;

 

问题排除:1、操作出错——登录网站测试与本地测试问题一致,排除;

                  2、网络问题——本地项目访问测试,问题依旧,排除;

                  3、图片预览功能出问题——该方法没有使用插件,只是单纯的读取地址,链接显示图片,与问题不相关,排除;

                  4、上传功能出问题——反复检查上传方法 

并仔细重新阅读插件文档,方法无错;后来加入onError事件,执行的时候onError事件被触发——问题锁定在发请求的环节,经过多次调整,还是不得其法!

 

问题解决:最后请教同事师兄,问题得以解决——因为有过类似的经验,他初步估计是程序拦截器的问题(我才想起,前不久应客户的要求,增加了session拦截的功能)——因为uploadify是不会自动传送session值的,所以当session被拦截后,它的请求是发不出去的(补充,还有一种情况就是uploaddify是使用flash来处理文件文件上传,而在在非IE浏览器(Firefox,Chrome)下使用flash方式向服务器发起请求,是会新生成一个session的(此时旧的session则丢失了),如果要避免这个问题,需要把当前的sessionId作为形参传给servlet类);

解决方法:在请求方法后面加上;jsessionid=<%=session.getId()%>——如

'uploadPictures.action?userId='+userId+','+folderId+‘;jsessionid=<%=session.getId()%>', 

 

二、补充:uploadify上传时,只要一初始化就会发出一个请求,而这个请求是当前页面的地址,解决方法是:

将jquery.uploadify.min.js(我用的版本是3.2)原来的代码:

1 this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url)

替换为:

1 this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url = this.settings.button_image_url ? SWFUpload.completeURL(this.settings.button_image_url) : this.settings.button_image_url

 

posted on 2012-04-25 22:30  明殇_weixue  阅读(1196)  评论(2编辑  收藏  举报