中文前端UI框架Kit(八)無插件異步文件上傳組件源碼解析


號外:kitjs官方討論QQ群建立了,QQ群號88093625,歡迎大家加入,討論前端相關話題

上一篇介紹了上傳組件的用法,以及api,這一篇,我們通過代碼分析,從原理上給大家做下講解

demo地址:http://xueduany.github.com/KitJs/KitJs/index.html#upload

(一)Dom結構

我們首先看下上傳按鈕的dom結構

image

我們可以比較清楚看到在一層層div里面,嵌套了一個form元素input file,並且這個input file的面積足夠大到覆蓋外面的div通過Css渲染的按鈕。這樣點擊了外面的div做的按鈕,等於點擊到input file,這樣就能通過input file打開文件選擇了。同理,圖片上傳的預覽也是同理

*可能有童鞋會問,input file不是有顏色的嗎,ok,我們把他設置為透明就不會顯示出來了,同時他的dom位置還在。

(二)選擇文件上傳

image

首先綁定input file的change事件,當選中文件之后,觸發上傳事件

image

取到input.files開始上傳

image

創建ajax鏈接,用post方式上傳文件內容,在request頭設置fileName

content-type設置為Content-Type", "application/octet-stream"

上傳過程調用onprogress方法,顯示進度條

 

對於ie不支持這種上傳方式,改為

image

創建iframe,在iframe創建form,並且利用表單提交的方式上傳

 

(三)拖拽上傳

拖拽上傳,只支持高級瀏覽器,

 

image

關鍵點在於,瀏覽器會在drag和drop事件,把文件放入event對象的dataTransfer屬性里面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM