1:通過(guò) file控件
2:通過(guò)拖拽
3:fileList對(duì)象繼承自Blob對(duì)象(h5中提供的二進(jìn)制處理對(duì)象)
? ? 一:生成 Blob 對(duì)象有兩種方法:一種是使用 Blob 構(gòu)造函數(shù),另一種是對(duì)現(xiàn)有的 Blob 對(duì)象使用 slice 方法切出一部分。
blog對(duì)象自身只有兩個(gè)只讀屬性,size和type。
blob的構(gòu)造函數(shù)(a,b)a參數(shù)代表數(shù)據(jù),b參數(shù)為一個(gè)object包含兩個(gè)屬性分別為type -- MIME 的類型。endings -- 決定 append() 的數(shù)據(jù)格式,(數(shù)據(jù)中的 \n 如何被轉(zhuǎn)換)可以取值為 "transparent" 或者 "native"(t* 的話不變,n* 的話按操作系統(tǒng)轉(zhuǎn)換;t* 為默認(rèn))
3:filereader對(duì)象
FileReader API 才是我們接下去完成一些任務(wù)的關(guān)鍵。FileReader API 用于讀取文件,即把文件內(nèi)容讀入內(nèi)存。它的參數(shù)是 File 對(duì)象或 Blob 對(duì)象。
一:該對(duì)象擁有三種方法分別用來(lái)讀取不同類型的文件
????readAsText(Blob|File, opt_encoding):返回文本字符串。默認(rèn)情況下,文本編碼格式是 UTF-8,可以通過(guò)可選的格式參數(shù),指定其他編碼格式的文本。
????readAsDataURL(Blob|File):返回一個(gè)基于 Base64 編碼的 data-uri 對(duì)象。
????readAsArrayBuffer(Blob|File):返回一個(gè) ArrayBuffer 對(duì)象。
二:FileReader API 還有一個(gè) abort 方法,用于中止文件上傳。
三:該對(duì)象是通過(guò)一步的方式讀取文件的
4:url對(duì)象
? ? 一:獲取方法
? ??????var objecturl = window.URL.createObjectURL(blob|file);
? ? 二:用途
? ? ? ? 該對(duì)象生成的值可以用來(lái)作為任意一個(gè)擁有url(src/href)屬性的標(biāo)簽,需要注意的是,即使是同樣的二進(jìn)制數(shù)據(jù),每調(diào)用一次 URL.createObjectURL 方法,就會(huì)得到一個(gè)不一樣的 URL
? ? 三:使得該url失效
? ? ? ? 1:刷新頁(yè)面。2:window.URL.revokeObjectURL(objectURL);