ssh项目使用uploadify-v2.1.4上传插件出现诡异问题(session丢失、初始化请求)

本文描述了一个关于uploadify插件在非IE浏览器环境下上传图片功能失效的问题排查与解决过程。问题在于uploadify不会自动传递session值,导致请求发送失败。通过增加sessionId解决了问题。

一、问题描述:

              项目整体运行正常,但挂上网络后一个月,客户来电说,(非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

 

转载于:https://www.cnblogs.com/zmc330/archive/2012/04/25/2470641.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值