1.前提条件:在Chrome设置中把网站添加允许加载flash名单;打开Uploadify的’debug’:true 配置方便看变量输出。
1.swf路径404错误
在页面中是这样写的:
$(function() {
$('#file_upload').uploadify({
'debug':true,
'swf' : 'uploadify.swf',// swf 文件路径
'uploader' : 'uploadify.php'//后台处理程序的相对路径
// 更多的参数
});
});
一直报swf文件404,网页直接访问swf没问题,查看调试台发现路径多了一段/xx/,ip/应用/xx/yy.do这是当前网页的路径,为什么会多一段了?找js源码,发现SWFUpload.completeURL = function (a) {xxx}方法中截取的了最后一个/符号 保留了 /应用/xx/,修改此方法如下:
SWFUpload.completeURL=function(a){if(typeof(a)!=="string"||a.match(/^https?:\/\//i)||a.match(/^\//)){console.log("---"+a);return a}var c=window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"");var x=window.location.pathname.indexOf("/");x=window.location.pathname.indexOf("/",x+1);var path=window.location.pathname.substr(0,x)+"/";console.log(path+a);return path+a};
重启后还是爆相同错误,但是页面上的flashvars值中的uploadURL地址变为正确的了,度娘可知,可能会出现由浏览器和FlashPlayer修改了基准路径设置而造成的请求路径错误,所以配置改成绝对地址 “swf”:‘http://ip/应用/static/uploadify.swf’。
2.在访问上传页面时,uploadify初始化会再一次访问该url。
当配置uploadify指定 button_image_url 的url时,会访问指定的url地址,当默认去访问当前的url 地址。
当设置为空或者不设置,uploadify初始化时会自动请求当前页面url,可以通过bugInfo展示的列表查看到button_image_url配置为当前地址。网上查到解决问题如下:
把源代码中:
this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
改为:
this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
this.settings.button_image_url = this.settings.button_image_url ?
SWFUpload.completeURL(this.settings.button_image_url) : this.settings.button_image_url;
调整后button_image_url地址为空了。