webuploader在IE8/9下上传遇到的两个问题

时间:2023-03-09 06:17:41
webuploader在IE8/9下上传遇到的两个问题

最近在做图片上传功能。

点击一个按钮,弹出一个iframe,它是百度的webuploader插件

在点击关闭按钮时,IE9下总是会报错: __flash__removeCallback未定义错误

解决办法很简单,就是在关闭前直接清空含有此flash控件的dom元素。

原因在以下两篇博文里:http://blog.csdn.net/lanfeng330/article/details/8492910

http://blog.csdn.net/qq282030166/article/details/45308121

谢谢前辈。

另外,这个控件其自身有两种上传模式

在不支持HTML5上传的浏览器中(IE8/9等),会使用flash的方式进行上传

可是却发现报错了。通过跟踪发现,它有请求crossdomain.xml文件,这是什么鬼?

原来,

flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据。

位于www.a.com域中的SWF文件要访问www.b.com的文件时,SWF首先会检查www.b.com服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许www.a.com域访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml。

所以在初始化uploader时,定义的swf的路径如果是 abc.test.com/..../upload.swf

那么,这个xml文件就应该放在 abc.test.com的根目录下面,并且一定要确保 abc.test.com/crossdomain.xml可以直接访问到

但这时IE下依然请求不到这个文件,原因如下文所述

http://www.jianfangkk.com/aspnet/201501/206

所以最后解决方案是:

<system.webServer>
<staticContent>
<remove fileExtension=".xml" />
<mimeMap fileExtension=".xml" mimeType="text/plain" />
</staticContent>
</system.webServer>