zoukankan      html  css  js  c++  java
  • java应用uploadify 3.2丢失session

    java应用uploadify 3.2丢失session

    http://c-bai.iteye.com/blog/1829269

    uploadify上传用的是一个flash插件。 
    flash中有个bug就是自身创建一个session,这样就导致与web本身的session不一致 权限验证失败的问题。  就是这个问题 让我花了好多时间来解决 
    查询百度 、google、以及stackoverflow多日 大都是写php和asp.net中的例子 

    这让我很头疼,最终在某个博客 看到解决的 问题,经过本人测试 这个解决方法可行,跟大家分享一下 ,以及下次自己碰到一样问题的时候方便查阅 

    原因: 


    因为uploadify是不会自动传送session值的,所以当session被拦截后,它的请求是发不出去的(补充,还有一种情况就是uploaddify是使用flash来处理文件文件上传,而在在非IE浏览器(Firefox,Chrome)下使用flash方式向服务器发起请求,是会新生成一个session的(此时旧的session则丢失了),如果要避免这个问题,需要把当前的sessionId作为形参传给servlet类); 

     1 $("#uploadify").uploadify({
     2 'swf'        : basePath+'js/component/uploadify/js/uploadify.swf',
     3 'uploader'      : 'uploadFile.action;jsessionid=<%=session.getId(%>', // 上传到后台的处理类
     4 'cancelImg'     : [b][b][/b][/b]basePath+'js/component/uploadify/img/uploadify-cancel.png', // 取消按钮的图片
     5 'fileObjName'     : 'uploadify', // 传到后台的对象名
     6 'queueID'       : 'fileQueue',
     7 'fileSizeLimit' : '8589934592', // 限制文件上传的大小
     8 'formData'      :{'userId':userId},
     9 'progressData'  : 'percentage',  //有speed和percentage两种,一个显示速度,一个显示完成百分比 
    10 'buttonText'     : '添加附件', // 按钮上的文字
    11 'auto'             : false, // 是否自动上传
    12 'multi'     : false, // 是否支持多文件上传
    13 'removeComplete': false,
    14  'onQueueComplete'    : function (queueData){
    15          alert("上传完毕!");
    16                              
    17             }
    18     });

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

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

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

    替换为: 

    1 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
    【签名→→→】【****知其然知其所以然****】 工具只能帮助我们解决我们认识到的问题,解决不了我们都没理解的问题。 不能再把一切扔给框架、容器、工具! 首先理解你的业务逻辑,理解你要实现的功能, 然后搞清楚框架、容器、工具会帮助我们做什么。 只有理解了自己的业务逻辑,理解了自己的代码,理解了自己要用到的第三方代码, 才能真正完美地实现我们需要的功能!
  • 相关阅读:
    CSS hack——不同浏览器的CSS应对法
    IE6对CSS支持Bug收集
    jQuery
    jQuery学习备忘
    MSSQLSERVER之发布-分发-订阅
    利用Resgen.exe 批量生成resources文件
    多语言处理
    c# winform 打包部署 自定义界面 或设置开机启动
    C#修改文件夹权限
    VS2008 Windows Form项目安装包生成详解
  • 原文地址:https://www.cnblogs.com/yaowukonga/p/3406847.html
Copyright © 2011-2022 走看看