解决SWFUpload上传控件在非IE浏览器下不好用的问题,主要是两点:一点是请求路径,一点是网上说的session的问题。

第一:路径问题

SWFUploa控件的upload_url必须是绝对路径。

如我的项目链接为:http://127.0.0.1:8080/TestWeb,进行文件上传的servlet为uploadServlet,那么upload_url就必须为:http://127.0.0.1:8080/TestWeb/uploadServlet

若只是写upload_url:uploadServlet,IE(IE11没试过)能用,非IE的(如谷歌、火狐、360)都是404。

第二:sessionid丢失的问题

这个问题如果后台不需要session验证其实也不是什么问题,但是要验证呢就是个问题了。

这个问题谷歌不明显,路径问题解决了谷歌浏览器还是可以上传的。

火狐彻底不行,原因就是网上说:sessionid丢失了。

所以只需要在文件上传时把sessionid带过来再通过sessionid把原来的session找回来问题就解决了。具体解决如下:

第一步、建立一个全局map用来存放session:

public class MySessionContext {

private static MySessionContext instance;

private HashMap mymap;

private MySessionContext() {

mymap = new HashMap();

}

public static MySessionContext getInstance() {

if (instance == null) instance = new MySessionContext();

return instance;

}

public synchronized void AddSession(HttpSession session) {

if (session != null) mymap.put(session.getId(), session);

}

public synchronized void DelSession(HttpSession session) {

if (session != null)mymap.remove(session.getId());

}

public synchronized HttpSession getSession(String session_id) {

if (session_id == null) return null;

return (HttpSession) mymap.get(session_id);

}

}

第二步、建一个session监听器,当session创建和销毁的时候map中随之添加删除session:

public class MySessionListener implements HttpSessionListener{

private MySessionContext myc=MySessionContext.getInstance();

public void sessionCreated(HttpSessionEvent arg0) {

myc.AddSession(arg0.getSession());

}

public void sessionDestroyed(HttpSessionEvent arg0) {

myc.DelSession(arg0.getSession());

}

}

在web.xml中注册这个监听器:

MySessionListener

com.wjl.MySessionListener

第三步、在文件上传路径中把sessionid传过来:

var sessionid = '';

var serverURL='';

upload_url: serverURL+'uploadServlet?jsessionid='+sessionid

第四步、在后台需要验证session的时候重新生成session:

Object userInfo = request.getSession().getAttribute("userInfo");

if (userInfo == null){

String sessionID = request.getParameter("jsessionid");

if(sessionID!=null && sessionID.trim().length()>0 && (!sessionID.trim().equalsIgnoreCase("null"))){//说明session有传值

HttpSession sess = MySessionContext.getInstance().getSession(sessionID);

userInfo = sess.getAttribute("userInfo");

if(userInfo==null){

throw new Exception("用户信息获取失败:userInfo=null");

}

}

}

这样子之后,用户验证就通过了,自然也就不会空指针,也就能上传文件啦。

swfupload 无法加载_解决SWFUpload上传控件在非IE浏览器下不好用的问题相关推荐

  1. android verticalviewpager 下拉刷新 上拉加载_设计规范 | 详解组件控件结构体系:加载类...

    设计师在进行APP设计时,往往会更加专注于界面的布局.界面和界面之间怎么跳转.操作反馈,却往往忽略掉一个比较重要的环节,就是APP数据加载中的设计.那么我们怎么处理好界面交互中的加载设计,保证体验无缝 ...

  2. bootstrapinput传参数_***文件上传控件bootstrap-fileinput的使用和参数配置说明

    特别注意: 引入所需文件后页面刷新查看样式奇怪,浏览器提示错误等,可能是因为js.css文件的引用顺序问题,zh.js需要在fileinput.js后面引入.bootstrap最好在fileinput ...

  3. python bootstrap-fileinput示例_文件上传控件bootstrap-fileinput的使用

    一.准备 1.插件下载地址:https://github.com/kartik-v/bootstrap-fileinput/ 下载后的压缩包解压文件夹内容如下: js:插件核心js代码,引用filei ...

  4. angularjs java 文件上传_学习使用AngularJS文件上传控件

    前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用angular,且不想因为一个上传功能又引入一个jque ...

  5. JQuery文件上传控件Uploadify文档

    Uploadify是一个基于JQuery的文件上传控件,支持ajax无刷新上传,比较好用,现在用着一个不爽的地方是--每个版本的属性名和事件名.方法名都有一些不一样,这在遇到问题,查资料的时候会比较麻 ...

  6. FineUI秘密花园(七) — 上传控件

    FineUI直到V3.0才内置了自己的上传控件,为什么唯独上传控件姗姗来迟,这其中的缘由是啥?之前又是如何实现上传功能的呢?下面听我慢慢道来. AJAX请求与文件上传请求的对比 普通的AJAX请求的请 ...

  7. 纠结的上传控件,啊!多么痛的领悟

    如果那写错了,或者那写的不对路子请帮忙说出来,我好改正,嘿嘿进步都是一点点的哟!~ 正文之前 搞不清楚是上传控件的脑残还是我下午脑袋缺氧.这种情况搞不懂是不是常见的形态之一了. 正文之前结束 今天阳光 ...

  8. jquery文件上传控件 Uploadify

    基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件. 要求使用jquery1.4或以上版本,flash player 9.0.24以上. 有两个 ...

  9. 使用jquery文件上传控件Uploadify来异步上传图片

    1.项目中需要图片的异步上传,度娘之后发现有一个插件可以完成这个需求,即是:Uploadify 下面是这个异步上传的插件的一个简单介绍: 基于jquery的文件上传控件,支持ajax无刷新上传,多个文 ...

  10. 使用Kendo上传控件实现ASP.NET Core的“批处理模式”

    从Github下载源代码 最初,我将上载控件用于仅表单上的基本上载控件.而且,这正是它的意思.但是,我希望它以一种"批处理模式"工作.我的意思是仅将文件上传到浏览器本身,而不在用户 ...

最新文章

  1. 作业1-四则运算题目生成程序
  2. 闲谈.NET中的类型和访问修饰符
  3. nlp 命名实体识别 算法_中文命名实体识别算法 Lattice LSTM
  4. 漫画:数据中台中台建设的十大误区(建议收藏)
  5. 手把手教你学项目管理软件project
  6. 我的世界服务器修改npc,我的世界npc修改对话框 | 手游网游页游攻略大全
  7. 百度翻译API的调用
  8. 《微积分:一元函数积分学》——指数函数积分进阶
  9. windows无法连接到打印机_电脑、打印机常见故障处理
  10. 李彦宏一声「萝卜快跑」,中国首个无人车出行App就位!网友:这才是科技公司该干的事儿...
  11. Linux报错:Port xxx is in use by another program. Either identify and stop that program...
  12. 华为云服务器重装java环境
  13. Linux 各种压缩、解压命令
  14. LPC24xx系列CAN波特率计算
  15. 计算机领域cip是什么意思,版权页上的CIP数据是什么意思?
  16. notepad++在行首行尾添加字符
  17. mimeType形式大全
  18. 单片机 C51 编程要点总结
  19. python自带IDLE清屏设置——ClearWIndow.py
  20. 啥是伪代码?假的代码??是代码吗??

热门文章

  1. Realtek网卡如何识别具体型号是8111B/8111C/8111D还是8111E
  2. 手机微信开发上传图片到服务器,微信开发之通过微信接口上传图片到本地服务器...
  3. android apk更新下载以及安装
  4. 调查问卷的JSON模板设计与分数计算的Java实现
  5. javascript小说阅读器分页算法的实现
  6. 「需求广场」需求词更新明细(四)
  7. 人工智能基础知识入门
  8. 考研助手软件制作记录
  9. Rplidar A1/A2使用及Hector_SLAM建图
  10. 要马儿跑,又要马儿不吃草?聊聊联邦学习与分布式机器学习