前幾天想在手機端做個異步上傳圖檔的功能,平時用的比較多的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的代碼。
此處主要的是<input type="file" id="id_photos" name="id_photos" value="上傳">這一句代碼,其他的不用管,因為這裡我是在手機端,用的是jqueryMobile插件。
3、到js代碼進行處理。
這裡我對每一行的代碼都基本寫上了注釋友善大家了解。流程就是上傳圖檔給uploader.php去處理,處理成功傳回json資料,然後在json中取出url值,将其賦給img标簽裡,然後将img标簽追加帶頁面顯示出來。
這裡我附上json傳回的資料:
上傳前HTML頁面是這樣的:
異步上傳成功後HTML頁面效果是這樣子的:
4、看看PHP是如何處理的
代碼基本上都加上了注釋,友善大家了解,雖然是用PHP處理圖檔上傳,但你了解了上傳時程式代碼所處理的邏輯思路,将思路用于.net或者java裡都還是可以的。
以上就是使用JQuery插件ajaxFileUpload 異步上傳檔案的整一個分析過程。
網上找這個ajaxfileupload插件比較雜,是以這裡給個連結大家去下載下傳:
如何聯系我:【萬裡虎】www.bravetiger.cn
【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/