javascript欄位介紹前端的檔案流flie。
背景
領導提出一個問題,能不能不借助端的能力,實現本地分段讀取資料分段顯示。在沒有特別大的性能要求或明確提出要求的情況下一般是一次性加載所有的數據並渲染,但是如果數據量大或者手機性能不好的話就會有別的問題了。
聽到這個的時候我是懵逼的,我啥也不知道,但是我同事實現了,寫了一個簡單的demo
前端的實現
假設只上傳一個檔案
-
上傳檔案目前前端最常見的是藉助input 的type='file'(還有DataTransfer和HTMLCanvasElement可以實現,不介紹了)File
檔案上傳成功之後就會傳回一個FileList 物件(event.target.files[0]裡麵包含了所有與文字相關的資訊,包括文字流,文字流我們可能肉眼不可見)
console.log('[FileList 物件]:',event.target.files[0])
- File接口是基於Blod,所以Blod有的屬性和方法,File也會有,例如slice=> 截取來源Blob 物件中指定範圍內的數據,text=>傳回一個promise且包含blob所有內容的UTF-8格式(就是把我們blod轉換成我們可以讀懂的utf-8的格式)
const fileDate = event.target.files[0] let text = await fileDate.slice(1, 10).text() console.log('[截取一段Blod对象]', fileDate.slice(1, 10)); console.log('[Blod对象转化为文本]', text);复制代码
- 既然FileList 物件繼承於Blod對象,Blod物件物件又有slice和text方法。所以之前的那個需求就很好實現了
具體實現我還麼有寫,思路到這裡,日後補上
Blob
Blob/slice
File
Input/file
其他與流有關的API
我記得很早之前寫過不借助端的力量實現本地上傳預覽圖片音訊文件,那時候就有提到用過Blod對象,FileReader對象,還有createObjectURL,但是這次剛好可以把這些都整合起來,一起說一下
var aBlob = new Blob ( array, options );
參數,array 是由ArrayBuffer, ArrayBufferView, Blob, DOMString 等物件構成的Array ,或其他類似物件的混合體,它將被放進Blob。 DOMStrings會被編碼為UTF-8。 options不介紹了
Blob 物件表示一個不可變、原始資料的類別檔案物件。它的資料可以按文字或二進位的格式進行讀取,也可以轉換成 ReadableStream 來用於資料操作。
=> 這樣說的話就是一段我們認識文本可以透過new Blod可以轉換成Blod物件
問題Blod能夠做什麼? ?
那就要看哪些物件可以用他做搞一些事情
下載網頁中某段文字或日誌
URL.createObjectURL() 她的參數就是Blod對象,用來建立一個url;可以結合a元素的download屬性,實現一段日誌或文字的下載
<buttom>复制文本 </buttom> function onCopyHandle() { // 创建隐藏的可***链接 let content = ` name: sunseekers role: student houseName: shanghai url: https://github.com/sunseekers userAgent: ${navigator.userAgent} log:'这里是日志内容' `.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); // 字符内容转变成blob地址 document.body.appendChild(eleLink); eleLink.click(); // 触发点击 document.body.removeChild(eleLink); // 然后移除 Message.success('日志下载成功') };复制代码
本地預覽上傳圖片
圖片可以用img標籤顯示也可以用canvas畫,看需求
<p> <input> <img alt="介紹前端的檔案流flie" > </p> <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>复制代码
又學到一個新的API=>FileReader
FileReader
寫完發現
原來這些在之前的文章裡面都有用過只是我沒有想起來,或是被遺忘了,這又是一篇重複率很高的文章。當你對一個物件及他週邊的屬性屬性的時候就可以做很多事了。完了做一次總結和回顧感覺很不一樣,原來很多東西都是可以重複利用的,或者說在某一個基礎之上做了擴展和昇華,又能過做很多很有意義的事情了。與我而言又一次更加清晰的意識到這裡前端與本地數據,流有關的知識點
今後可以繼續擴展學習的知識點,這些都是與流有關的
MediaSource 物件
ReadableStream
Streams API
ArrayBuffer
#相關免費學習推薦:# javascript(影片)
以上是介紹前端的檔案流flie的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。