1. 程式人生 > >jquery上傳外掛Uploadify錯誤總結問題

jquery上傳外掛Uploadify錯誤總結問題

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地址為空了。