uploadify上传导致session丢失解决方案

java应用uploadify 3.2丢失session uploadify上传用的是一个flash插件。 flash中有个bug就是自身创建一个session,这样就导致与web本身的session不一致 权限验证失败的问题。  就是这个问题 让我花了好多时间来解决 查询百度 、google、以及stackoverflow多日 大都是写php和asp.net中的例子 这让我很头疼,最终在某个博客 看到解决的 问题,经过本人测试 这个解决方法可 阅读详情

uploadify上传用的是一个flash插件。
flash中有个bug就是自身创建一个session,这样就导致与web本身的session不一致

导致问题
在进行 权限控制 登录的用户会存储session 导致 session获取不到 上传失败
解决思路
创建监听器存储session信息
在通过uploadify上传时候 存储sessionId
在权限控制中根据sessionId获取原有的session信息


解决方案

1.首先创建一个存储session和获取session和移除session的公共类
java代码:

public class CmsSessionContext {
    private static final Map<String,HttpSession> ctx=new HashMap<String, HttpSession>();

    private CmsSessionContext (){

    }
    public static void addSession(HttpSession session){
        ctx.put(session.getId(), session);
    }
    public static void remoceSession(HttpSession session){
        ctx.remove(session.getId());
    }
    public static HttpSession getSession(String sessionId){
        return ctx.get(sessionId);
    }

}

2.创建session的监听器

/**
 * session的监听器为了解决uploadify上传session丢失的问题
 * @author Administrator
 *
 */
public class CmsSessionListener implements HttpSessionListener {
    //创建session
    @Override
    public void sessionCreated(HttpSessionEvent event) {

    }
    //关闭浏览器退出session销毁
    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        CmsSessionContext.remoceSession(event.getSession());
        System.out.println("移除了session"+event.getSession().getId());
    }

}

在web.xml配置监听器

<!-- 配置获取session的监听器 -->
    <listener>
        <listener-class>org.cms.web.CmsSessionListener</listener-class>
    </listener>

3.在登录成功之后存入session

        CmsSessionContext.addSession(session);
        System.out.println("存储了session"+session.getId());

4.在上传页面传递sessionId
使用隐藏域存储当前的sessionId
根据 uploadify 的 formData 属性 传递sessionId

html代码:

<input type="hidden" id="sid" value="<%=session.getId()%>"/>
<input type="file" id="attach"name="attach" /> 
<input type="button" id="uploadFile"value="上传文件" />
$(function() {
        $('#attach')
                .uploadify(
                        {
                            'swf' : $("#ctx").val()
                                    + '/resources/uploadify/uploadify.swf',
                            'uploader' : 'upload',
                            //服务器段访问的名称
                            'fileObjName' : 'attach',
                            //限制文件上传类型
                            'fileTypeExts' : '*.gif; *.jpg; *.png; *.txt',
                            //不能自动上传
                            'auto' : false,
                            'formData':{"sid":$("#sid").val()},
                            'onUploadSuccess' : function(file, data, response) {
                                //alert('The file '
                                //      + file.name
                                //      + ' was successfully uploaded with a response of '
                                //      + response + ':' + data);
                                //字符串转换成json
                                var ao = $.parseJSON(data);
                                //alert(ao.result);
                            }
                        });
        $("#uploadFile").click(function() {
            $("#attach").uploadify("upload", "*");
        });

    });

5.在权限控制的拦截器中 获取sessionId

        /**
         * 如果使用uploadify进行文件的上传,由于flash的bug问题,会产生一个新的session,此时验证失败
         * 所以必须在此处获取一个原有的session,然后重置session信息
         */
        //如果是uploadify上传获取sid
        String sid=request.getParameter("sid");
        if(sid!=null&&!"".equals(sid.trim())){
            //当sid有值,就表示是通过uploadify上传文件,此时就应该获取原有的session
            session=CmsSessionContext.getSession(sid);
        }

6.在退出登录的方法中移除session

public String logout(HttpSession session){
        //移除session
        CmsSessionContext.addSession(session);
        //session失效
        session.invalidate();
        return "redirect:/login";
    }
火狐下uploadify上传丢失session解决(jsp,java) 解决uploadify上传火狐浏览器下丢失session Flash上传丢失session 立即下载

相关推荐

解决uploadify使用时session发生丢失问题的方法

主要为大家详细介绍了uploadify使用时发现session发生丢失问题的解决方法,遇到过类似问题的朋友可以参考本文进行解决

解决uploadify上传文件session失效的问题

据线上反馈,某个页面上传文件的时候失效,刷新页面后退出系统,于是在 beta 环境上尝试复现,成功,是个稳定的 bug 的,于是开始了探索、解决之旅。 打开 Chrome 浏览器控制栏,仔细观察了下上传前后请求的变化,发现每当点击上传按钮上传文件时,都会更新 session_id。嚯,这个隐隐有种熟悉的感觉,再尝试几次后,定位到是上传组件 uploadify 的问题。这是个 flash 插件,以前遇到过一次,那时是在火狐浏览器上,每次上传文件都会遇到 session 失效情形,于是就用了个 hack 方法解

molaifeng的专栏 1184

VS2017中调用gdal(C#版)的方法二(含gdal下载地址,配置过程,代码测试,超详细!!)

VS2017中gdal(C#)版的配置与测试 上次记录了直接在VS2017中下载并应用gdal的方法,这次来记录一下网上下载的安装包配置与测试的方法。 一、环境、版本及下载地址 win10,vs2017社区版,gdal2.4.4 还是像之前在Unity中应用gdal一样,最好是下载已经编译好的C#版的gdal,不然自己配置真的很容易出错,我就是这样的,下面提供不同版本的gdal下载地址: 1.GDAL2.4.4(C#版、64位): https://download.youkuaiyun.com/download/che

chengbaola的博客 1366

C# 解决uploadify插件上传时造成session丢失问题

简而言之,第一次加载页面的时候,session_userid和session_adminId是有的,经过浏览上传后,session_userid和session_adminId为null了,所以第一次加载页面后可以把session_userid和session_adminId带到前端上传参数中,后面再加载时通过UserId和AdminId在后端获取到值,再处理绑定。

Brave的博客 483

STM32串口DMA双缓冲机制实战:提升数据传输效率的终极方案

本文深入解析了STM32串口DMA双缓冲机制的核心原理与实战配置。通过对比传统中断方式,阐述了双缓冲如何实现数据接收与处理的“无缝接力”,从而在工业传感器数据采集等高负载场景下,将CPU占用率降至极低水平并彻底避免数据丢失。文章提供了基于标准外设库的详细配置步骤、中断处理逻辑及性能实测数据,是提升嵌入式系统串口通信效率和可靠性的终极方案。

weixin_29192365的博客 80

把 LLM 编排能力塞进 ABAP 系统里,ZLLM 仓库的工程价值与 SAP 落地场景

ZLLM项目将LLM应用开发中的常见工程问题引入ABAP原生环境,为SAP系统提供AI工作流构建能力。它类似ABAP版的LangChain,支持Chain组合、Prompt模板、状态传递等核心功能,强调纯ABAP实现、延迟执行以及与ABAP数据结构的深度集成。项目包含工厂类、LLM客户端、负载均衡器等模块,特别设计了能处理ABAP内表和结构的模板引擎,使业务数据可直接用于Prompt生成。通过Step和Flow机制支持复杂业务过程编排,并采用延迟执行和并行处理优化批量任务性能。该项目为ABAP开发者提供了在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 61

Uploadify获取Session

前台通过uploadify上传文件,原本在action中获取session中的用户信息,但是发现为空,而通过sessionid获取session的方法HttpSessionContext.getSession(java.lang.String sessionId)又被废弃,所以通过实现HttpSessionListener的sessionCreated和sessionDestroyed来解决问题。...

iteye_5856的博客 163

库存优化技术提升电商效率

第一部分:库存优化技术基础 第1章:库存优化的基本概念 库存优化是现代电商运营中至关重要的一个环节。简单来说,库存优化指的是通过一系列的策略和技术手段,使得库存管理更加高效、准确,从而降低运营成本,提高销售额。 1.1 库存优化的定义与重要性

AI天才研究院 1249

Uploadify上传Session丢失问题

只要在使用uploadify 上传的时候,只要将sessionId传过去就可以了。 在jsp中如何取sessionId:${pageContext.session.id} &lt;input type="hidden" id="sessionId" value="${pageContext.session.id}" /&gt; $("").uploadify({'formData'...

dawuafang 321

10款AI工具赋能虚拟展厅设计:架构师效率提升90%的秘密武器

2020年全球疫情成为数字转型的催化剂,虚拟展厅从"可选项"迅速转变为"必需品"。根据Gartner最新报告,到2025年,超过70%的企业将采用虚拟展厅作为客户体验和产品展示的核心渠道。这一转变不仅是应急措施,更是商业模式的永久性革新。虚拟展厅突破了物理空间的限制——一个精心设计的虚拟展厅可以同时接待来自全球各地的访客,无需考虑场地容量;展品可以以数字形式永久保存,避免了物流和损耗问题;数据分析功能可以精确追踪每位访客的行为轨迹,提供前所未有的洞察。数据透视。

AI 领航者的博客 1573

PoE 的三大国际标准:PoE、PoE+、PoE++

很多人知道 PoE 能“一根网线,既供电又传数据”,但鲜少有人能说清楚:PoE 供电到底分几种标准?差别有多大?哪些设备要用 PoE,哪些必须上 PoE+ 或 PoE++?今天,我们就来一次彻底的“拆解”,把 PoE 的三大国际标准——讲得明明白白,顺便也帮你厘清网络工程中的常见“供电疑惑”。

网络技术联盟站 1551

解决uploadify上传丢失session问题

今天在用jQuery的上传插件uploadify上传文件到后台处理数据的时候,发现session信息和当前会话session不一致,整理了一下如下:         由于uploadify属于flash上传,意味着当上传的时候会新建一个新的session会话,php后台处理的时候会接收不到当前浏览器的session会话参数而被服务器拒绝。 session是存放在服务器里面,但是一旦程序中加入这

竹音林的专栏 3006

Fiori Elements 从入门到精通开发教程的文章目录

Fiori Elements 开发技术相对 SAP 其他历史悠久,发展成熟的开发技术来说,是一个新事物。正因如此,迄今为止国内深入讲解 Fiori Elements 应用的中文材料几乎没有。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4883

解决了uploadify上传文件时,某些浏览器(版本)中,session丢失导致上传失败的问题

一、问题近期,在做文件上传时,使用了uploadify这个基于flash的文件上传组件,版本号为3.2.1。在IE下,一切正常,但是当切换到某些低版本chrome浏览器后,发生了文件不能上传的问题。通过调试和问题定位,发现是session丢失,导致服务端不能识别登录状态,所以报异常。经过fiddler抓包,正常上传时,request报文头如下:POST /rmwlgzpt/webApp/backl...

huangyuanmu的专栏 943

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

基于jQuery和Flash的多文件上传插件uploadify在asp.net下session丢失解决方案

转自:http://www.cnblogs.com/fumj/archive/2012/11/30/2795990.html

懒人改变世界 1011

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

uploadify 3.2 java应用丢失session

flash中有个bug就是自身创建一个session,这样就导致与web本身的session不一致 权限验证失败的问题。  原因: 因为uploadify是不会自动传送session值的,所以当session被拦截后,它的请求是发不出去的(补充,还有一种情况就是uploaddify是使用flash来处理文件文件上传,而在在非IE浏览器(Firefox,Chrome)下使用flash方式

jerome 1108

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript 之 uploadify 或 SWFUpload上传问题

1、uploadify 或 SWFUpload在Chrome、Firefox浏览器下session找不到的问题 问题如下:为了安全起见,程序开发中往往通过Session设置权限控制,只有登录用户才能进行上传。在IE下没问题,但是在Firefox等非IE内核浏览器下,运行报错“Http Error 302”。 经过搜索得知:因为 uploadify 或 SWFUpload...

weixin_33736832的博客 153

php网页上传丢失,php中用uploadify上传时session丢失

由于uploadify插件传送数据的时候是不能传输session及cookie的,有时候我们上传完图片,希望将图片名称等保存在session中,以免用户刷新网页的时候丢失又要重新上传,但实际测试中发现,大部分浏览器中会存在session丢失的问题,比如火狐及360但是在部分高级别的ie浏览器中又不会丢失,网上有人说要卸载windows的某个补丁,这不太方便;由于http会话是基于无状态的,一旦网页...

weixin_39805355的博客 209

jquery文件上传插件uploadify在.NET中session丢失的解决方案

基于jQuery和Flash的多文件上传插件uploadify的确很好用,具体配置和使用方法见以前的一篇文章:《一款基于jQuery的文件上传插件(.NET版)》。但今天在用这个插件的时候遇到了一个非常头痛的问题,上传文件的时候,我后台的session突然都丢失了,我进入调试去查看session变量发现为null。悲剧,难道我不能用这个插件了吗?当然不可能,这么好的东西当然要用起来,于是...

a994182的博客 210

uploadify session java_解决uploadify使用时session发生丢失问题的方法

今天在使用uploadify时发现session会发生丢失的情况,经过一番研究发现,其丢失并不是真正的丢失,而是在使用Flash上传控件的时候使用的session机制和asp.net中的不相同。为解决这个问题使用两种方案,下面进行介绍第一种:修改Gobal前台aspx页面:$("#uploadify").uploadify({'uploader': '/LZKS/Handler/BigFileUp...

weixin_39837139的博客 291

解决uploadify在Firefox下丢失session的问题

今天在用uploadify上传插件时遇到了一个问题,由于我后台做了权限管理,每个请求都有去读session判断权限,但用这个插件时发现登录后上传不了,原因是在读session时认为没有权限而被拦截了,后来在后台打印登录时产生session的id和上传时读取session的id,果然不一样,在网上搜索了一番,还真有不少人遇到这个问题,

黄绍添的个人博客 8140

使用Uploadify在FF中出现session假丢失解决方案

今天在使用uploadify时发现

FreshMan 4384

uploadify 302 java_java应用uploadify 3.2丢失session

java应用uploadify 3.2丢失sessionspringmvc 项目中 uploadifyswf版多文件上传替代ajaxupload单文件上传插件中遇到HTTP error 302 问题。uploadify上传用的是一个flash插件。flash中有个bug就是自身创建一个session,这样就导致与web本身的session不一致权限验证失败的问题。就是这个问题让我花了好多时间来解决...

weixin_30270715的博客 221
上一篇: uploadify和springmvc结合
下一篇: java开发微信公众号企业付款开发
shaomiaojava
博客等级 码龄11年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值