天天看點

【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)

前幾天想在手機端做個異步上傳圖檔的功能,平時用的比較多的JQuery圖檔上傳插件是Uploadify這個插件,效果很不錯,但是由于手機不支援flash,是以不得不再找一個檔案上傳插件來用了。後來發現ajaxFileUpload這個插件挺不錯,是以就用這個插件來做異步上傳檔案的效果。網上也有很多對ajaxFileUpload插件的使用的文章,不過我發現沒有PHP版,是以這次伺服器那邊的處理就使用PHP語言來處理。

  一、先對ajaxFileUpload插件的文法參數進行講解

  原理:ajaxfileupload是通過監聽iframe的onload方法來實作, 當從服務端處理完成後,就觸發iframe的onload事件調用其綁定的方法,在綁定的方法中擷取iframe中伺服器傳回的資料體(支援的普通文本,json,xml,script, html)

  文法:$.ajaxFileUpload([options])

  參數說明:

  1,url            上傳處理程式位址,也就是我發送給伺服器端所要處理上傳的位址。  

  2,fileElementId       需要上傳的檔案域的ID,即<input type="file" id="file">的ID。

  3,secureuri        是否啟用安全送出,預設為false。 

  4,dataType        伺服器傳回的資料類型。可以為xml,script,json,html。如果不填寫,jQuery會自動判斷。

  5,success        送出成功後自動執行的處理函數,參數data就是伺服器傳回的資料。

  6,error          送出失敗自動執行的處理函數。

  7,data           自定義參數。這個很有用,比如你上傳圖檔的同時想把圖檔名也一起傳過去,可以用這個參數去實作。

  8,type           當要送出自定義參數時,這個參數要設定成post

  二、接下來我們看看如何去使用

  1、先引入ajaxFileUpload這個插件。

  這裡我用的是jq1.11.1版本,網上有說jq版本與ajaxfileupload的版本要對應才不會有異常報錯,反正我現在這個沒錯誤。

   

  2、貼上HTML的代碼。

【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)
【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)

  此處主要的是<input type="file" id="id_photos" name="id_photos" value="上傳">這一句代碼,其他的不用管,因為這裡我是在手機端,用的是jqueryMobile插件。

  

  3、到js代碼進行處理。

【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)
【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)

  這裡我對每一行的代碼都基本寫上了注釋友善大家了解。流程就是上傳圖檔給uploader.php去處理,處理成功傳回json資料,然後在json中取出url值,将其賦給img标簽裡,然後将img标簽追加帶頁面顯示出來。

  這裡我附上json傳回的資料:

【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)
【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)

  上傳前HTML頁面是這樣的:

【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)

  異步上傳成功後HTML頁面效果是這樣子的:

【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)

  4、看看PHP是如何處理的

【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)
【轉】JQuery插件ajaxFileUpload 異步上傳檔案(PHP版)

   代碼基本上都加上了注釋,友善大家了解,雖然是用PHP處理圖檔上傳,但你了解了上傳時程式代碼所處理的邏輯思路,将思路用于.net或者java裡都還是可以的。

   以上就是使用JQuery插件ajaxFileUpload 異步上傳檔案的整一個分析過程。

  網上找這個ajaxfileupload插件比較雜,是以這裡給個連結大家去下載下傳:

如何聯系我:【萬裡虎】www.bravetiger.cn

【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)

【部落格】http://www.cnblogs.com/kenshinobiy/