提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

项目中要用到上传,由于使用了JQuery脚本库,于是就准备找一款JQuery的上传脚本,挑了几款,觉得都还不错,最后从功能和代码体积的前提下决定采用Uploadify( 官方主页 )。

代码很轻松的就嵌入到页面中去了,看了下官方的几个配置,感觉挺容易上手的,本来以为就这样配置算完成了,但是今天在FireFox下使用FireBug调试页面时发现了诡异的GET请求,请求的是当前页面的根,比如页面是 /tickets/create ,那么请求的就是 /tickets/ ,恰恰这个路径我没有设置路由,也就是说请求将返回一个HTTP 404 Not Found的错误,经过进一步的跟踪发现了问题和新加入的Uploadify有关,于是我又检索了官方的文档,结果该配置的都配置了,配置信息是没有什么错误,但是这个诡异的GET依然存在。

Uploadify 404 Not Found

求助于万能的Google,结果在 《Uploadify v3 bug. Unecessary request when there is no button_image_url set.》 找到了解决的办法。

原来问题的症结在于 SWFUpload ,这个是Uploadify调用供支持Flash上传用的,但是其没有对 button_image_url 进行判断,导致如果 button_image_url 为空的话就默认请求了当前根路径,修改的方法也比较简单,加个判断即可:

将下面代码:

this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);

修改成如下:

if (this.settings.button_image_url != "") {
    this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
}