友情提示在,在Android手機webview中,是不支援上傳檔案的,網上說是修改Android端的代碼,但我沒試過,我們這邊是使用用戶端提供的接口來實作上傳的。
該屬性表明了伺服器端可接受的檔案類型,可以限制你手機選擇相關的檔案,如果限制多個,可以用逗号分割,下面的代碼就表示隻能選擇圖檔與音頻相關的檔案:

在移動端,點選後會讓你選擇拍照或相冊,還是蠻高大上的。下圖是UC浏覽器中:
一般選擇檔案都會使用“change”事件,下面的代碼就是綁定了change事件,彈出檔案大小:
1) 有些手機浏覽器在點選的時候,會彈出鍵盤選擇,我用onfocus="this.blur()",來強制失去焦點。
2) 當選擇過一次後,再次選擇同一個檔案,“change”事件不會觸發,因為value沒有改變,在網上看到個方法,我還沒有在實際項目中使用,相容性有待考證。
這裡注意下:克隆一個元素節點會拷貝它所有的屬性以及屬性值,但不會拷貝那些使用addEventListener()方法或者node.onclick = fn用JavaScript動态綁定的事件。
File對象負責處理那些以檔案形式存在的二進制資料,也就是操作本地檔案。
1)File對象可以通過3種方式擷取:
1. <input>元素上選擇檔案後傳回的FileList對象中的成員
2)File對象有9個屬性,這裡就隻介紹3個:
Blob可以“append”,ArrayBuffer資料。ArrayBuffer存在的意義就是作為資料源提前寫入在記憶體中,就是提前釘死在某個區域,長度也固定。
下面的代碼是擷取data:URL,可以将傳回的result内容指派給img的src,用于預覽等操作。
URL對象是硬碟上指向檔案的URL。上面的例子中擷取圖檔的引用,通過讀取data URI,data URI是個一大串的字元。
圖檔原本就在硬碟上,還要轉換成另一個格式再用,有點繞了,完全可以直接引用檔案的URL,下面是兩個方法:
console.log(url)内容如下:
在移動端需要做個相容性判斷:
File接口基于Blob,繼承了Blob的功能,并且擴充支援了使用者計算機上的本地檔案。
1)建立Blob對象的4種方法:
1. 調用Blob構造函數
2. 使用一個已有Blob對象上的slice()方法切出另一個Blob對象
3. 調用canvas對象上的toBlob方法
2)利用Blob對象,生成可下載下傳檔案
3)通過slice方法,将二進制資料按照位元組分塊,傳回一個新的Blob對象
利用FormData對象,可以使用鍵值對來模拟一個完整的表單,然後使用XMLHttpRequest發送這個"表單"。
使用FormData的最大優點就是我們可以異步上傳一個二進制檔案。
參考資料:
本文轉自 咖啡機(K.F.J) 部落格園部落格,原文連結:http://www.cnblogs.com/strick/p/5181701.html,如需轉載請自行聯系原作者