HTML5 FileReader示例

這個示例并沒做優(yōu)化痒留,僅作為《Javascript高級程序設(shè)計》的部分摘錄

完整讀取

var fileInput = document.getElementById('file');
fileInput.addEventListener('change', function(event) {
  var info = "",
    output = document.getElementById('output'),
    progress = document.getElementById('progress'),
    files = event.target.files,
    type = 'default',
    reader = new FileReader();
  if (/image/.test(files[0].type)) {
    reader.readAsDataURL(files[0]);
    type = 'image';
  } else {
    reader.readAsText(files[0]);
    type = 'text';
  }
  reader.onerror = function() {
    output.innerHTML = "Could not read file, error code is " +
      reader.error.code;
  };
  reader.onprogress = function(event) {
    if (event.lengthComputable) {
      progress.innerHTML = event.loaded + "/" + event.total;
    }
  };
  reader.onload = function() {
    var html = "";
    switch(type) {
      case 'image':
        html = `<img src="${reader.result}">`;
        break;
      case 'text':
        html = reader.result;
        break;
    }
    output.innerHTML = html;
  }
});
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <input id="file" type="file" name="" value="" multiple>
  <button type="submit"></button>
  <div id="output">
    
  </div>
  <div id="progress"></div>
  <script src="app.js"></script>
</body>
</html>

部分讀取

部分讀取只需要調(diào)用input.files[0].slice(begin, end)截取一部分內(nèi)容即可纯蛾,范圍是[begin,end), 如:

reader.readAsDataURL(files[0].slice(begin, end))

為什么可以這樣寫呢言沐?

下面是讀取方法的函數(shù)簽名:

void abort();
void readAsArrayBuffer(in Blob blob);
void readAsBinaryString(in Blob blob);
void readAsDataURL(in Blob blob);
void readAsText(in Blob blob, [optional] in DOMString encoding);

這些方法都接受一個Blob類型的對象,實際上File是Blob的子類,F(xiàn)ile的slice方法就是Blob類上的slice方法,返回值也是Blob類型對象

只讀取文件的一部分可以節(jié)省時間,非常適合只關(guān)注數(shù)據(jù)中某個特定部分(如文件頭部)的情況蛉拙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市彻亲,隨后出現(xiàn)的幾起案子孕锄,更是在濱河造成了極大的恐慌,老刑警劉巖苞尝,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畸肆,死亡現(xiàn)場離奇詭異,居然都是意外死亡宙址,警方通過查閱死者的電腦和手機(jī)轴脐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抡砂,“玉大人大咱,你說我怎么就攤上這事∽⒁妫” “怎么了碴巾?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丑搔。 經(jīng)常有香客問我厦瓢,道長,這世上最難降的妖魔是什么啤月? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任煮仇,我火速辦了婚禮,結(jié)果婚禮上谎仲,老公的妹妹穿的比我還像新娘欺抗。我一直安慰自己,他們只是感情好强重,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布绞呈。 她就那樣靜靜地躺著,像睡著了一般间景。 火紅的嫁衣襯著肌膚如雪佃声。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天倘要,我揣著相機(jī)與錄音圾亏,去河邊找鬼。 笑死封拧,一個胖子當(dāng)著我的面吹牛志鹃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泽西,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼曹铃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捧杉?” 一聲冷哼從身側(cè)響起陕见,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎味抖,沒想到半個月后评甜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡仔涩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年忍坷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熔脂。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡佩研,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锤悄,到底是詐尸還是另有隱情韧骗,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布零聚,位于F島的核電站袍暴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏隶症。R本人自食惡果不足惜政模,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚂会。 院中可真熱鬧淋样,春花似錦、人聲如沸胁住。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至儡司,卻和暖如春娱挨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捕犬。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工跷坝, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碉碉。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓柴钻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親垢粮。 傳聞我的和親對象是個殘疾皇子贴届,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,677評論 0 15
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock閱讀 3,370評論 2 36
  • 新增的API 1.語義: 能夠讓你更恰當(dāng)?shù)孛枋瞿愕膬?nèi)容是什么。 2.連通性: 能夠讓你和服務(wù)器之間通過創(chuàng)新的新技術(shù)...
    紅鯉魚不理綠鯉魚閱讀 6,878評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理足丢,服務(wù)發(fā)現(xiàn)粱腻,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 羅輯和云天明本是同一種人斩跌。 不知道為什么劉慈欣寫了這樣一個結(jié)局绍些,在我看來甚至是爛尾的結(jié)局。如果讓我寫的話耀鸦,我一定會...
    ca4389e50722閱讀 1,060評論 0 0