成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > HTML5 FileReader對(duì)象的具體使用方法

HTML5 FileReader對(duì)象的具體使用方法

熱門標(biāo)簽:只辦理400電話 拓展地圖標(biāo)注 高德地圖標(biāo)注地點(diǎn)糾錯(cuò) 電話機(jī)器人黑斑馬免費(fèi) 電話機(jī)器人電銷系統(tǒng)掙話費(fèi) 平?jīng)龅貓D標(biāo)注位置怎么弄 機(jī)器人外呼系統(tǒng)存在哪些能力 如何獲取地圖標(biāo)注客戶 南昌仁和怎么申請(qǐng)開通400電話

寫在前面

前一篇文章介紹了HTML5中的Blob對(duì)象(詳情戳這里),從中了解到Blob對(duì)象只是二進(jìn)制數(shù)據(jù)的容器,本身并不能操作二進(jìn)制,故本篇將對(duì)其操作對(duì)象FileReader進(jìn)行介紹。

FileReader

FileReader主要用于將文件內(nèi)容讀入內(nèi)存,通過一系列異步接口,可以在主線程中訪問本地文件。

使用FileReader對(duì)象,web應(yīng)用程序可以異步的讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件(或者原始數(shù)據(jù)緩沖)內(nèi)容,可以使用File對(duì)象或者Blob對(duì)象來指定所要處理的文件或數(shù)據(jù)。

創(chuàng)建實(shí)例

var reader = new FileReader();

方法

方法定義 描述
abort():void 終止文件讀取操作
readAsArrayBuffer(file):void 異步按字節(jié)讀取文件內(nèi)容,結(jié)果用ArrayBuffer對(duì)象表示
readAsBinaryString(file):void 異步按字節(jié)讀取文件內(nèi)容,結(jié)果為文件的二進(jìn)制串
readAsDataURL(file):void 異步讀取文件內(nèi)容,結(jié)果用data:url的字符串形式表示
readAsText(file,encoding):void 異步按字符讀取文件內(nèi)容,結(jié)果用字符串形式表示

事件

事件名稱 描述
onabort 當(dāng)讀取操作被中止時(shí)調(diào)用
onerror 當(dāng)讀取操作發(fā)生錯(cuò)誤時(shí)調(diào)用
onload 當(dāng)讀取操作成功完成時(shí)調(diào)用
onloadend 當(dāng)讀取操作完成時(shí)調(diào)用,不管是成功還是失敗
onloadstart 當(dāng)讀取操作將要開始之前調(diào)用
onprogress 在讀取數(shù)據(jù)過程中周期性調(diào)用

使用方法

FileReader通過異步的方式讀取文件內(nèi)容,結(jié)果均是通過事件回調(diào)獲取,下面是一個(gè)讀取本地txt文件內(nèi)容的例子:

var input  = document.getElementById("file"); //input file
input.onchange = function(){
    var file = this.files[0];
    if(!!file){
        //讀取本地文件,以gbk編碼方式輸出
        var reader = new FileReader();
        reader.readAsText(file,"gbk");
        reader.onload = function(){
            //讀取完畢后輸出結(jié)果
            console.log(this.result);
        }
    }
}

此外我們還可以通過注冊(cè)onprogress、onerror等事件,記錄文件讀取進(jìn)度或異常行為等等。

讀取方式

FileReader提供了四種不同的讀取文件的方式,如:readAsArrayBuffer會(huì)將文件內(nèi)容讀取為ArrayBuffer對(duì)象,readAsBinaryString則將文件讀取為二進(jìn)制串,下面對(duì)這四種方式進(jìn)行簡(jiǎn)單區(qū)分。

首先準(zhǔn)備一張圖片(6764 字節(jié))和一個(gè)txt文本(51字節(jié))作為測(cè)試文件:

接著編寫測(cè)試代碼:

 var reader = new FileReader();
// 通過四種方式讀取文件
//reader.readAsXXX(file);   
reader.onload = function(){
    //查看文件輸出內(nèi)容
    console.log(this.result);
    //查看文件內(nèi)容字節(jié)大小
    console.log(new Blob([this.result]))
}

readAsDataURL

查看圖片輸出結(jié)果:

查看txt輸出結(jié)果:

很明顯,readAsDataURL會(huì)將文件內(nèi)容進(jìn)行base64編碼后輸出,這個(gè)很好區(qū)分。

readAsText

此方法可以通過不同的編碼方式讀取字符,我們使用utf-8讀取

查看圖片輸出結(jié)果:

查看txt輸出結(jié)果:

readAsText讀取文件的單位是字符,故對(duì)于文本文件,只要按規(guī)定的編碼方式讀取即可;
而對(duì)于媒體文件(圖片、音頻、視頻),其內(nèi)部組成并不是按字符排列,故采用readAsText讀取,會(huì)產(chǎn)生亂碼,同時(shí)也不是最理想的讀取文件的方式

readAsBinaryString

查看圖片輸出結(jié)果:

查看txt輸出結(jié)果:

與readAsText不同的是,readAsBinaryString函數(shù)會(huì)按字節(jié)讀取文件內(nèi)容。
然而諸如0101的二進(jìn)制數(shù)據(jù)只能被機(jī)器識(shí)別,若想對(duì)外可見,還是需要進(jìn)行一次編碼,而readAsBinaryString的結(jié)果就是讀取二進(jìn)制并編碼后的內(nèi)容。
盡管readAsBinaryString方法可以按字節(jié)讀取文件,但由于讀取后的內(nèi)容被編碼為字符,大小會(huì)受到影響,故不適合直接傳輸,也不推薦使用。
如:測(cè)試的圖片文件原大小為6764 字節(jié),而通過readAsBinaryString讀取后,內(nèi)容被擴(kuò)充到10092個(gè)字節(jié)

readAsArrayBuffer

查看圖片輸出結(jié)果:

查看txt輸出結(jié)果:

與readAsBinaryString類似,readAsArrayBuffer方法會(huì)按字節(jié)讀取文件內(nèi)容,并轉(zhuǎn)換為ArrayBuffer對(duì)象。
我們可以關(guān)注下文件讀取后大小,與原文件大小一致。
這也就是readAsArrayBuffer與readAsBinaryString方法的區(qū)別,readAsArrayBuffer讀取文件后,會(huì)在內(nèi)存中創(chuàng)建一個(gè)ArrayBuffer對(duì)象(二進(jìn)制緩沖區(qū)),將二進(jìn)制數(shù)據(jù)存放在其中。通過此方式,我們可以直接在網(wǎng)絡(luò)中傳輸二進(jìn)制內(nèi)容。
好了說這么多,那ArrayBuffer到底是個(gè)毛?
關(guān)于ArrayBuffer對(duì)象牽涉的知識(shí)點(diǎn)比較多,完全可以單開一篇細(xì)說,在此只要簡(jiǎn)單理解為存放了一段二進(jìn)制數(shù)據(jù)的內(nèi)存空間即可。
而本身ArrayBuffer中的內(nèi)容對(duì)外是不可見的,若要查看其中的內(nèi)容,就要引入另一個(gè)概念:類型化數(shù)組
我們可以嘗試查看下剛剛通過readAsArrayBuffer方法讀取的圖片文件內(nèi)容:

可以看到,整個(gè)圖片文件的6764個(gè)字節(jié),被分別存儲(chǔ)在長(zhǎng)度為6764的數(shù)組中,而數(shù)組中每一個(gè)元素的值,為當(dāng)前字節(jié)的十進(jìn)制數(shù)值。
關(guān)于ArrayBuffer和類型化數(shù)組的概念在此不做深入解釋,之后會(huì)再寫一篇單獨(dú)討論。

應(yīng)用場(chǎng)景

說了這么多,最后還是要落實(shí)到FileReader能解決什么問題,下面通過幾個(gè)例子說明:

在線預(yù)覽本地文件

我們知道,img的src屬性或background的url屬性,可以通過被賦值為圖片網(wǎng)絡(luò)地址或base64的方式顯示圖片。
在文件上傳中,我們一般會(huì)先將本地文件上傳到服務(wù)器,上傳成功后,由后臺(tái)返回圖片的網(wǎng)絡(luò)地址再在前端顯示。
通過FileReader的readAsDataURL方法,我們可以不經(jīng)過后臺(tái),直接將本地圖片顯示在頁面上。這樣做可以減少前后端頻繁的交互過程,減少服務(wù)器端無用的圖片資源,代碼如下:

var input  = document.getElementById("file");   // input file
input.onchange = function(){
    var file = this.files[0];
        if(!!file){
            var reader = new FileReader();
            // 圖片文件轉(zhuǎn)換為base64
            reader.readAsDataURL(file);
            reader.onload = function(){
                // 顯示圖片
                document.getElementById("file_img").src = this.result;
        }
    }
}

運(yùn)行效果如下:

對(duì)于圖片上傳,我們也可以先將圖片轉(zhuǎn)換為base64進(jìn)行傳輸,此時(shí)由于傳輸?shù)膱D片內(nèi)容就是一段字符串,故上傳接口可以當(dāng)做普通post接口處理,當(dāng)圖片傳輸?shù)胶笈_(tái)后,可以在轉(zhuǎn)換為文件實(shí)體存儲(chǔ)。
當(dāng)然,考慮到base64轉(zhuǎn)換效率及其本身的大小,本方法還是適合于上傳內(nèi)容簡(jiǎn)單或所占內(nèi)存較小的文件。

二進(jìn)制數(shù)據(jù)上傳

HTML5體系的建立引入了一大堆新的東西,基于XHR2,我們可以直接上傳或下載二進(jìn)制內(nèi)容,無需像以往一樣通過form標(biāo)簽由后端拉取二進(jìn)制內(nèi)容。
簡(jiǎn)單整理下上傳邏輯:
1、通過input[type="file"]標(biāo)簽獲取本地文件File對(duì)象
2、通過FileReader的readAsArrayBuffer方法將File對(duì)象轉(zhuǎn)換為ArrayBuffer
3、創(chuàng)建xhr對(duì)象,配置請(qǐng)求信息
4、通過xhr.sendAsBinary直接將文件的ArrayBuffer內(nèi)容裝填至post body后發(fā)送
代碼實(shí)現(xiàn)如下:

var input  = document.getElementById("file");   // input file
input.onchange = function(){
    var file = this.files[0];
        if(!!file){
            var reader = new FileReader();
            reader.readAsArrayBuffer(file);
            reader.onload = function(){
                var binary = this.result;
                upload(binary);
        }
    }
}

//文件上傳
function upload(binary){
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://xxxx/opload");
    xhr.overrideMimeType("application/octet-stream");
    //直接發(fā)送二進(jìn)制數(shù)據(jù)
    if(xhr.sendAsBinary){
        xhr.sendAsBinary(binary);
    }else{
        xhr.send(binary);
    }
    
    // 監(jiān)聽變化
    xhr.onreadystatechange = function(e){
        if(xhr.readyState===4){
            if(xhr.status===200){
                // 響應(yīng)成功       
            }
        }
    }
}

總結(jié)

本篇主要介紹了FileReader對(duì)象的屬性及應(yīng)用場(chǎng)景,有了FileReader,我們可以將本地文件讀取到內(nèi)存中。文中我們提到了ArrayBuffer和類型化數(shù)組的概念,這使得我們可以在內(nèi)存中進(jìn)一步操作二進(jìn)制數(shù)據(jù),關(guān)于這部分內(nèi)容,會(huì)在之后的博客中進(jìn)行歸納。

參考資料

[1] MDN_FileReader
[2] Unicode 和 UTF-8 有何區(qū)別

到此這篇關(guān)于HTML5 FileReader對(duì)象的具體使用方法的文章就介紹到這了,更多相關(guān)HTML5 FileReader對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:池州 遼源 西藏 永州 漯河 青島 新疆 棗莊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5 FileReader對(duì)象的具體使用方法》,本文關(guān)鍵詞  HTML5,FileReader,對(duì)象,的,具體,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 FileReader對(duì)象的具體使用方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5 FileReader對(duì)象的具體使用方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日韩激情小视频| 五月天丁香在线| 777午夜精品视频在线播放| 26uuu另类亚洲欧美日本一| 欧美精品一区二区三区在线| japanese日本护士撒尿| 毛片毛片毛片毛| 久久婷婷国产综合尤物精品| 亚洲日本黄色片| caopor在线| 欧美极品aaaaabbbbb| 国产aⅴ精品一区二区四区| 婷婷综合在线观看| 国内精品久久久久影院色| 人妻无码中文字幕| 亚洲va久久久噜噜噜久久| 性欧美1819sex性高清| 国产乱xxⅹxx国语对白| 久久久精品一区二区三区| 色乱码一区二区三区熟女| 青青艹在线视频| 免费国产h视频在线观看86| 91在线在线观看| 久久国产精品久久w女人spa| 日韩美女在线观看一区| 你懂得视频网站| 91在线你懂的| 亚洲精品视频自拍| 呻吟揉丰满对白91乃国产区| 欧美精品一区二区三区在线四季| 久久97超碰色| 91精品国产综合久久久久久| 白白在线精品| 99www免费人成精品| 欧美一区二区三区电影| 亚洲综合婷婷久久| 99自拍视频在线| 成人av电影观看| 亚洲电影免费观看高清完整版在线| 2020国产精品久久精品不卡| 欧美国产综合在线| 另类中文字幕网| 四虎在线视频免费观看| 亚洲高清免费在线观看| 亚洲二区在线播放视频| 欧美亚洲另类制服自拍| 精品女同一区二区三区在线播放| 亚洲一区二区三| 在线观看视频99| 国产精品成久久久久| 日本黄色录像片| 欧美精品一区二区高清在线观看| 99精品电影| 国产一区二区不卡在线| 先锋资源男人站| 波多野结衣啪啪| 日韩久久免费电影| а√天堂8资源在线| 亚洲男人第一av| 丁香花在线影院| 韩国av电影免费观看| 精品国产午夜福利在线观看| 久久久久久av无码免费网站| 五月天婷婷丁香| 中文字幕免费一区| 亚洲av综合色区无码一区爱av| 91av在线免费观看视频| 国家队第一季免费高清在线观看| 网曝门事件国产精品二区| 国产亚洲精品久久久久久移动网络| **爰片久久毛片| 国产三区四区在线观看| 在线亚洲欧美日韩| 国产在线精品二区| 日韩免费av电影| 久久综合影院| 国产在线精品一区二区不卡了| 国产一区免费看| 久久久久久久久电影| 三年中国中文观看免费播放| 日韩写真欧美这视频| 欧美大片免费播放| 国产精品二三区| 欧美在线亚洲综合一区| 九九热爱视频精品视频| 天天干天天色综合| 天天撸夜夜操| 男人网站在线观看| 午夜精彩国产免费不卡不顿大片| 亚洲免费av一区| 毛片中文在线观看| 日韩三区在线观看| 麻豆网站免费在线观看| 青青青视频在线| 日韩激情精品| 亚洲视频精选| 日韩成人在线电影| 久久久视频免费观看| 国产极品粉嫩福利姬萌白酱| 国产精品视频一区二区免费不卡| 外国电影一区二区| 久久亚洲精品国产亚洲老地址| 91女厕偷拍女厕偷拍高清| 国产精品免费久久久久久| 自拍偷拍第9页| 污视频免费在线观看网站| 亚洲欧美一区二区在线观看| 18深夜视频在线观看| 国产成人在线观看免费网站| 国产永久免费观看| 国产午夜一区二区三区| 亚洲欧美日韩一区成人| 91色在线播放| 中文字幕一区二区三区在线播放| 日本一区二区黄色| 国产一区二区在线影院| 天堂成人国产精品一区| 91视频最新入口| 成人免费毛片嘿嘿连载视频| 黑巨茎大战欧洲金发美女| 在线观看毛片av| 超碰精品在线观看| 国内精品久久久久| 五月天婷婷激情| 日韩国产成人| 成年人网站免费在线观看| 97人妻精品一区二区三区| 亚洲视频小说图片| 国产噜噜噜噜噜久久久久久久久| 精品无人区一区二区| av第一福利在线导航| 欧美系列精品| 激情综合网最新| 亚洲一区二区中文| 午夜在线视频观看日韩17c| 亚洲一区二区三区高清视频| 久久久成人网| 依依成人精品视频| 久久这里只有精品18| 精品毛片一区二区三区| 国产网友自拍电影在线| 国产高清视频在线观看| 亚洲一区二区三区国产| 高清av一区二区| 色悠悠久久久久| 日韩在线国产精品| 欧美人妇做爰xxxⅹ性高电影| 亚洲最新永久观看在线| 国产黄人亚洲片| 国产精品海角社区在线观看| aaa在线观看| 久久久久毛片免费观看| 成人一区二区三区在线观看| 日韩经典中文字幕| 99久re热视频这里只有精品6| 最新日韩在线视频| 91精品国产综合久久久久久久久| 暧暧视频在线免费观看| 91香蕉视频污| h片在线观看| 欧美卡1卡2卡| 亚洲日本无吗高清不卡| 国产麻豆一区二区三区在线观看| 免费h片在线| 国产国产人免费人成免费视频| 一卡二卡三卡四卡| 亚洲第一区色| 人妻一区二区三区| 国产精品igao激情视频| 国产美女福利视频| 香蕉自在线视频| 毛片在线看网站| 午夜时刻免费入口| 男人添女人下面免费视频| 国产一区二区福利视频| 美腿丝袜在线亚洲一区| 国产欧美精品区一区二区三区| 亚洲成人a**址| 日本黄色小说视频| 99精品国产一区二区青青牛奶| xxxx在线免费观看| 中文字幕免费中文| 日韩av不卡一区二区| 亚洲xxxx天美| 国产精品高清无码| 国产精品普通话| www.久久综合| 国产亚洲一区二区三区在线播放| 日韩中字在线观看| 日韩精品免费一区二区| 久久99精品久久久久久青青日本| 一卡二卡3卡四卡高清精品视频| 先锋影音av资源站| 日韩高清欧美| 91亚洲国产成人精品一区| 影音先锋中文字幕一区二区| 国产色无码精品视频国产| 五月激情久久| 特黄视频免费观看| 91精品国产91久久久久| 精品视频在线播放色网色视频| 2019中文字幕免费视频| 91精品在线观看视频| 国模大尺度私拍在线视频| 欧美午夜精品理论片| 亚洲福利视频网站| 国产乱淫av麻豆国产免费| 亚洲自拍的二区三区| 免费成人你懂的| 黑人与亚洲人色ⅹvideos| 人妻激情偷乱视频一区二区三区| 希岛爱理一区二区三区av高清| 九九久久精品这里久久网| 浮力影院欧美三级日本三级| 成人中文字幕合集| 欧美国产精品一二三| 亚洲一区二区三区毛片| 女人色偷偷aa久久天堂| 精品国内二区三区| 人人干人人干人人干| 69夜色精品国产69乱| 狠狠色综合网| 日韩黄色一级大片| 亚洲福利精品在线| 亚洲精品成人在线| 一本色道久久综合亚洲91| 亚洲美女中文字幕| 美女欧美视频在线观看免费| 四虎国产精品免费久久5151| 四虎影视永久免费在线观看一区二区三区| 亚洲精品成人久久电影| 高清一级毛片视频| 亚洲在线免费播放| 日本婷婷久久久久久久久一区二区| 最近中文字幕mv免费高清视频8| 午夜欧美巨大性欧美巨大| 久久频这里精品99香蕉| 国产aⅴ2021| 亚洲动漫第一页| 久久伦理中文字幕| 欧美性受xxxx黑人xxxx| 小水嫩精品福利视频导航| 欧美黄色激情视频| 亚洲1234区| 日韩手机在线导航| 精品中文字幕一区二区三区四区| av动漫在线免费观看| 日本视频在线播放| 欧美影院天天5g天天爽| 美女18一级毛片一品久道久久综合| 亚洲免费一级片| 中文字幕日韩三级片| 国产精品91久久久久久| 国产精品久久久久av免费| 精品视频导航| 亚洲色图17p| 自拍视频在线网| av在线免费播放网站| 亚洲AV无码成人精品区明星换面| 污污的网站在线免费观看| 天堂中文av在线| 老司机在线视频二区| 国产免费拔擦拔擦8x高清在线人| 久久小说免费下载| 日韩av官网| 成人sese在线| 男捅女免费视频| 欧美在线视频日韩| 五月天网站亚洲| 亚洲GV成人无码久久精品| 小早川怜子一区二区三区| 综合久草视频| 久久久久亚洲av成人无码电影| juy有坂深雪中文字幕| xfplay精品久久| 欧美成人伊人久久综合网| 亚洲v精品v日韩v欧美v专区| 色777狠狠综合秋免鲁丝| 精品伦理一区二区| 一二三不卡视频| 精品国产一区二区三区四区在线观看| 精品欧美一区二区三区久久久| 欧美成人一区二区三区高清| 97国产精品久久久| 99精品视频在线播放免费| 国产99久久久国产精品免费看| 欧美成人亚洲成人| 国产一区二区视频在线观看| 黄在线免费观看| 青青草视频在线视频| 婷婷亚洲综合| 日韩精品第一页| 满满都是荷尔蒙韩剧在线观看| 蜜臀久久99精品久久久画质超高清| 中文字幕一区二区三区四区久久| 成人激情视频在线观看| 国产综合色香蕉精品| 亚洲高清视频一区| 亚洲成人第一网站| 国产亚洲成人一区| 中文在线免费一区三区| 午夜精品短视频| 神马午夜伦理不卡| 欧美日韩精品一区二区天天拍小说| 国产激情视频一区二区在线观看| 最近中文字幕在线免费观看| 亚洲精品中字| 91久久精品无码一区二区| 国产精品无码久久久久| 欧美大黑帍在线播放| 成人欧美在线观看| 成人精品3d动漫| 久久久久88色偷偷| 日韩三级在线观看| 国产伦精品一区二区| 成人亚洲成人影院| 国产精品露出视频| 91精品国产麻豆国产在线观看| 成人黄色大片在线免费观看| 欧美午夜片在线看| 亚洲精品国产福利| 欧美国产日韩亚洲一区| 免费国产高清| 免费视频一区三区| 黄色正能量网站| 蜜桃视频成人m3u8| 91精品国产综合久久香蕉最新版| 中文字幕乱在线伦视频乱在线伦视频|