uploadify插件的使用及兼容性

翻过IE8~11四座大山,终于进入了Firefox的森林。

Uploadify,多文件异步上传插件,能够显示文件上传进度,支持主流web开发(java、php、.net)。其核心是插件里的swf文件,封装了flash进行文件上传。因此,如果你的用户群体不方便或者不能够安装Flash插件,那就跳过此插件,寻找别的解决方案。当然,该插件的开发团队也与时俱进,推出了HTML5版本。而Flash版本,在不同的浏览器里存在很大的使用和兼容问题。本文就记录下上传插件uploadify在兼容性道路上的那些坑。

Step1:检查demo机是否安装Flash插件。

方式有很多,就介绍其中的两种。1、控制面板查找Flash。2、直接登录视频网站,爱奇艺或优酷或其他均可,如果能够正常观看视频(非H5),那就是正常安装了。注意方式2验证完请关闭网站回到该文继续欣赏。

如果检查完毕,发现没有安装,需要根据你浏览器类别,浏览器版本来进行下载对应的Flash版本,这也就是该插件的一大坑,Flash插件强关联操作系统,强关联浏览器类别,强关联具体某一类浏览器的版本。如,实际兼容Firefox4.0过程中,Flash版本对应Flash for Firefox 10,其他的版本安装上也不能使用。即IE,Firefox,chrome需要下载不同的Flash安装。

Step2:奇葩版本IE9。

IE9之上版本,可能会由于文档模式过低导致插件Flash初始化失败。尤其是IE9下,该插件的不稳定性问题最多,建议如果用户群主要使用IE9,最好不要使用该插件。因此,代码里需要加上<metahttp-equiv="X-UA-Compatible" content="IE=EmulateIE8"/>,默认到IE8文档模式。而此代码非强制执行,所以FAQ里还需要加上相关问题申明。此为坑之二。当然,IE9下还有object对应的id等问题,都归为此坑。

Step3:Firefox兼容问题。

在项目中,处于安全性考虑,每次请求必然会做合法性校验,即请求经过相关过滤器,而登录过滤器会根据sessionid获取用户session登录信息。而Firefox使用Flash上传文件时,Flash本身的bug导致提交时不会带上session cookie,而HTTP是无状态请求,session的存在以客户端和服务端的交换标志而延续。而session的sessionid是存储在cookie中的,导致请求不合法。官方问题说明:http://www.uploadify.com/documentation/uploadify/using-sessions-with-uploadify/,即采用插件自身的formData 属性实现,

解决方式一demo代码如下:

$("").uploadify({
'formData'  : {'ASPSESSID':$("#sessionId").val()}
});<input type="hidden" id="sessionId" value="${pageContext.session.id}" />

解决方式二:

在原有请求后加上

“;jsessionid=${pageContext.session.id}”

Adobe官方对于该问题的阐述:

A FileReference.upload() currently does not use the same cookies as your browser session if you are using Firefox (on Windows). In such cases, cookie information has to be inserted manually.

更深剖析请看:http://lync.in/session-trap-on-uploading-files-using-flash-in-firefox/

Step4:关于插件样式修改。

对于原生的上传插件样式,的确是比较丑,因此自定义样式必不可少。介绍两种方式。

1、通过插件自身接口,buttonClass,buttonImage等,具体请查api。

2、在onInit初始化插件的事件里,将原来根据js、css生成的样式全部重写,细节参考源码。

Step5:调试。

打开debug属性,因为输出信息是到固定点才会输出,因此,如果之间抛出了异常则会很难定位。如Firefox4.0使用最新的Flash,在初始化时是会抛出异常而导致无法准确定位。因此使用硕思闪客精灵反编译swf文件,查看逻辑代码结合实际输出结果进行推理。

坑之一整理完毕,End。

转载于:https://my.oschina.net/u/735461/blog/518151

【那些年我们一起挖过的坑】uploadify插件的兼容性相关推荐

  1. Python开发系列课程(10) - 那些年我们踩过的那些坑(上)

    那些年我们踩过的那些坑 坑01 - 整数比较的坑 在 Python 中一切都是对象,整数也是对象,在比较两个整数时有两个运算符==和is,它们的区别是: is比较的是两个整数对象的id值是否相等,也就 ...

  2. uploadify插件可选参数的详细介绍

    uploadify插件可选参数的详细介绍     以下是可选项的参数说明:(红色的属性代表常用的) 1 uploader 上传控件的主体文件,flash控件 默认值='uploadify.swf' 2 ...

  3. Jsp中Uploadify插件的使用(jQuery上传插件)

    原文地址:Jsp中Uploadify插件的使用(jQuery上传插件)作者:项海军 该插件使用的是jQuery,Flash和后端(您选择哪种语言实现的上传)脚本的组合. 如何来使用它? --执行此插件 ...

  4. Jquery Uploadify插件+Servlet解决FTP多文件上传

    这个小程序的起因是老大让我做一个Adobe LiveCycle的外围小程序,附件要随着工作流一起流转用于每级用户审批作为参考.我用.Net2个小时搞完了,被老大通知这个必须用JAVA做-.-无奈之下搞 ...

  5. php 上传图片 预览 多张,uploadify插件实现多个图片上传并预览

    使用uploadify插件可方便实现图片上传功能.兼容ie6.ie7. 上传成功之后使用插件的回调函数读取json数据,根据url实现图片预览. 效果图: 点击浏览文件上传图片,图片依次在右侧显示预览 ...

  6. asp.net中使用Uploadify插件实现多张图片上传,上传后可显示缩略图、删除图片

    本文为原创文章,欢迎转载!转载时请注明出处:http://blog.csdn.net/c_yang13 一.准备工具 1.jquery,我使用的是jquery-1.11.3.min.js 2.uplo ...

  7. Bootstrap框架----单张图片上传实现---Uploadify插件

    框架搭建 我们在之前的文章中已经实现了 单张图片的上传,使用的是最基本的 File类型的input提交的方式,上传到远程静态资源器和七牛云. 之前的文章关注的地方 主要是后端,也就是图片上传保存到哪里 ...

  8. uploadify插件浏览器flash兼容

    这个uploadify插件确实好用,但是现在大多浏览器把flash禁用了,故写了个脚本启用flash,毕竟对用户来说未必找的到启用flash,话不多说,直接上图: 在页面引入js,可在我的百度网盘:h ...

  9. 【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】

    [解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法] 参考文章: (1)[解决Chrome浏览器和IE浏览器上传附件兼容 ...

最新文章

  1. BZOJ1036: [ZJOI2008]树的统计Count
  2. WINCE6.0+S3C6410睡眠和唤醒的实现
  3. ToString格式大全
  4. php 上一个月的开始和结束,php获取上一个月的开始与结束时间遇到的问题
  5. Java配置文件的使用
  6. 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题
  7. mysql_install_db is deprecated_MySQL5.7源码安装问题汇总
  8. python-flask-Flask-SQLAlchemy与Flask-Migrate联合进行数据化迁移
  9. SQLServer left join 出现比左表多的数据
  10. fckeditor组件使用---fckeditor调用的三种方法1
  11. 华为服务器内存位置,服务器上的内存在哪里
  12. JAVA网络编程→BIO到NIO、IP域名服务器DNS端口、套接字编程Socket、TCP与UDP
  13. SQl SGA 整理
  14. 高等数学(第七版)同济大学 习题4-4(后14题) 个人解答
  15. 15 种最受欢迎的数据可视化流程图及模板
  16. 云基础架构|部署分类|IaaS|PaaS|SaaS——浅析云计算架构
  17. win10系统电脑分辨率异常解决办法
  18. 记录贴:学习Andorid开发
  19. 非root用户安装命令
  20. 遥感或DEM像素深度如何降为8bit

热门文章

  1. halcon相机标定助手_HALCON高级篇:单个相机的尺寸测量
  2. spring boot-302重定向
  3. Java序列化之serialVersionUID
  4. 在美国,什么是ICC,ICC揭秘
  5. Educational Codeforces Round 5(C. The Labyrinth)【DFS标记父节点】
  6. ORACLE select语句中IF语句的替代方法
  7. Loadrunner进行手机APP压力测试(亲测可行)
  8. vue项目中如何使用阿里 iconfont图标
  9. 520 钻石争霸赛 2021 PTA 1-6题
  10. 我是如何利用插件赚钱的(开发delphi6,VB 2008,Java ME等流行软件的第三方插件)