swfupload 无法加载_解决SWFUpload上传控件在非IE浏览器下不好用的问题
解决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浏览器下不好用的问题相关推荐
- android verticalviewpager 下拉刷新 上拉加载_设计规范 | 详解组件控件结构体系:加载类...
设计师在进行APP设计时,往往会更加专注于界面的布局.界面和界面之间怎么跳转.操作反馈,却往往忽略掉一个比较重要的环节,就是APP数据加载中的设计.那么我们怎么处理好界面交互中的加载设计,保证体验无缝 ...
- bootstrapinput传参数_***文件上传控件bootstrap-fileinput的使用和参数配置说明
特别注意: 引入所需文件后页面刷新查看样式奇怪,浏览器提示错误等,可能是因为js.css文件的引用顺序问题,zh.js需要在fileinput.js后面引入.bootstrap最好在fileinput ...
- python bootstrap-fileinput示例_文件上传控件bootstrap-fileinput的使用
一.准备 1.插件下载地址:https://github.com/kartik-v/bootstrap-fileinput/ 下载后的压缩包解压文件夹内容如下: js:插件核心js代码,引用filei ...
- angularjs java 文件上传_学习使用AngularJS文件上传控件
前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用angular,且不想因为一个上传功能又引入一个jque ...
- JQuery文件上传控件Uploadify文档
Uploadify是一个基于JQuery的文件上传控件,支持ajax无刷新上传,比较好用,现在用着一个不爽的地方是--每个版本的属性名和事件名.方法名都有一些不一样,这在遇到问题,查资料的时候会比较麻 ...
- FineUI秘密花园(七) — 上传控件
FineUI直到V3.0才内置了自己的上传控件,为什么唯独上传控件姗姗来迟,这其中的缘由是啥?之前又是如何实现上传功能的呢?下面听我慢慢道来. AJAX请求与文件上传请求的对比 普通的AJAX请求的请 ...
- 纠结的上传控件,啊!多么痛的领悟
如果那写错了,或者那写的不对路子请帮忙说出来,我好改正,嘿嘿进步都是一点点的哟!~ 正文之前 搞不清楚是上传控件的脑残还是我下午脑袋缺氧.这种情况搞不懂是不是常见的形态之一了. 正文之前结束 今天阳光 ...
- jquery文件上传控件 Uploadify
基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件. 要求使用jquery1.4或以上版本,flash player 9.0.24以上. 有两个 ...
- 使用jquery文件上传控件Uploadify来异步上传图片
1.项目中需要图片的异步上传,度娘之后发现有一个插件可以完成这个需求,即是:Uploadify 下面是这个异步上传的插件的一个简单介绍: 基于jquery的文件上传控件,支持ajax无刷新上传,多个文 ...
- 使用Kendo上传控件实现ASP.NET Core的“批处理模式”
从Github下载源代码 最初,我将上载控件用于仅表单上的基本上载控件.而且,这正是它的意思.但是,我希望它以一种"批处理模式"工作.我的意思是仅将文件上传到浏览器本身,而不在用户 ...
最新文章
- 作业1-四则运算题目生成程序
- 闲谈.NET中的类型和访问修饰符
- nlp 命名实体识别 算法_中文命名实体识别算法 Lattice LSTM
- 漫画:数据中台中台建设的十大误区(建议收藏)
- 手把手教你学项目管理软件project
- 我的世界服务器修改npc,我的世界npc修改对话框 | 手游网游页游攻略大全
- 百度翻译API的调用
- 《微积分:一元函数积分学》——指数函数积分进阶
- windows无法连接到打印机_电脑、打印机常见故障处理
- 李彦宏一声「萝卜快跑」,中国首个无人车出行App就位!网友:这才是科技公司该干的事儿...
- Linux报错:Port xxx is in use by another program. Either identify and stop that program...
- 华为云服务器重装java环境
- Linux 各种压缩、解压命令
- LPC24xx系列CAN波特率计算
- 计算机领域cip是什么意思,版权页上的CIP数据是什么意思?
- notepad++在行首行尾添加字符
- mimeType形式大全
- 单片机 C51 编程要点总结
- python自带IDLE清屏设置——ClearWIndow.py
- 啥是伪代码?假的代码??是代码吗??