這篇文章主要介紹前端的文件流flie是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
我們擁有10年網(wǎng)頁設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站、微信開發(fā)、小程序制作、手機(jī)網(wǎng)站制作設(shè)計(jì)、H5頁面制作、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。
領(lǐng)導(dǎo)提出一個(gè)問題,能不能不借助端的能力,實(shí)現(xiàn)本地分段讀取數(shù)據(jù)分段顯示。在沒有特別大的性能要求或者明確提出要求的情況下一般是一次性加載所有的數(shù)據(jù)并渲染,但是如果數(shù)據(jù)量大或者手機(jī)性能不好的話就會(huì)有別的問題了。
聽到這個(gè)的時(shí)候我是懵逼的,我啥也不知道,但是我同事實(shí)現(xiàn)了,寫了一個(gè)簡(jiǎn)單的demo
假設(shè)只上傳一個(gè)文件
上傳文件目前前端最常見的是借助 input 的 type='file'(還有DataTransfer和HTMLCanvasElement可以實(shí)現(xiàn),不介紹了)File
文件上傳成功之后就會(huì)返回一個(gè)FileList 對(duì)象(event.target.files[0]里面包含了所有與文本相關(guān)的信息,包括文本流,文本流我們可能肉眼不可見)
console.log('[FileList 對(duì)象]:',event.target.files[0])
const fileDate = event.target.files[0] let text = await fileDate.slice(1, 10).text() console.log('[截取一段Blod對(duì)象]', fileDate.slice(1, 10)); console.log('[Blod對(duì)象轉(zhuǎn)化為文本]', text);復(fù)制代碼
具體實(shí)現(xiàn)我還么有寫,思路到這里,日后補(bǔ)上
Blob
Blob/slice
File
Input/file
我記得很早之前寫過不借助端的力量實(shí)現(xiàn)本地上傳預(yù)覽圖片音頻文件,那個(gè)時(shí)候就有提到過用過Blod對(duì)象,F(xiàn)ileReader對(duì)象,還有createObjectURL,但是這一次恰好可以把這些都整合起來,一起說一下
var aBlob = new Blob( array, options );
參數(shù),array 是一個(gè)由ArrayBuffer, ArrayBufferView, Blob, DOMString 等對(duì)象構(gòu)成的 Array ,或者其他類似對(duì)象的混合體,它將會(huì)被放進(jìn) Blob。DOMStrings會(huì)被編碼為UTF-8。options不介紹了
Blob 對(duì)象表示一個(gè)不可變、原始數(shù)據(jù)的類文件對(duì)象。它的數(shù)據(jù)可以按文本或二進(jìn)制的格式進(jìn)行讀取,也可以轉(zhuǎn)換成 ReadableStream 來用于數(shù)據(jù)操作。
=> 這樣說的話就是一段我們認(rèn)識(shí)文本可以通過new Blod可以轉(zhuǎn)化為Blod對(duì)象
那就要看哪些對(duì)象可以用他做搞一些事情
URL.createObjectURL() 她的參數(shù)就是Blod對(duì)象,用來創(chuàng)建一個(gè)url;可以結(jié)合a元素的download屬性,實(shí)現(xiàn)一段日志或者文本的下載
<buttom onclick="onCopyHandle()">復(fù)制文本 </buttom> function onCopyHandle() { // 創(chuàng)建隱藏的可***鏈接 let content = ` name: sunseekers role: student houseName: shanghai url: https://github.com/sunseekers userAgent: ${navigator.userAgent} log:'這里是日志內(nèi)容' `.trim(); let filename = 'logFiles.md' const eleLink = document.createElement('a'); eleLink.download = filename; eleLink.style.display = 'none'; const blob = new Blob([content]); eleLink.href = URL.createObjectURL(blob); // 字符內(nèi)容轉(zhuǎn)變成blob地址 document.body.appendChild(eleLink); eleLink.click(); // 觸發(fā)點(diǎn)擊 document.body.removeChild(eleLink); // 然后移除 Message.success('日志下載成功') };復(fù)制代碼
圖片可以用img標(biāo)簽顯示也可以用canvas畫,看需求
<body> <p class="index"> <input type="file" value="上傳文件"> <img width="100" height="100"></img> </p> </body> <script> let inputEle = document.querySelector("input") let img = document.querySelector("img") inputEle.addEventListener('change', async function (event) { const fileDate = event.target.files[0] const fileReader = new FileReader() fileReader.readAsDataURL(fileDate) fileReader.onload = e => { img.src = e.target.result } }) </script>復(fù)制代碼
FileReader
以上是前端的文件流flie是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享標(biāo)題:前端的文件流flie是什么
URL分享:http://bm7419.com/article18/pphigp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、ChatGPT、微信小程序、小程序開發(fā)、營銷型網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)