成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

講解前端中 File、Blob、ArrayBuffer、Base64、DataURL

開發(fā) 前端
我們一起聊聊前端中 File、Blob、ArrayBuffer、Base64、DataURL,你會發(fā)現(xiàn)什么?

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎(chǔ)是進階的前提是我的初心~

1. File

本質(zhì): 繼承自Blob,表示用戶文件系統(tǒng)中的文件

特性:

const file = new File(['content'], 'demo.txt', {
  type: 'text/plain',
  lastModified: Date.now()
});

console.log(file.name); // 'demo.txt'
console.log(file.size); // 7 (字節(jié))
console.log(file.type); // 'text/plain'

2. Blob (Binary Large Object)

作用: 存儲二進制數(shù)據(jù)的容器

創(chuàng)建方法:

// 從字符串創(chuàng)建
const blob1 = new Blob(['Hello World'], { type: 'text/plain' });

// 從ArrayBuffer創(chuàng)建
const buffer = new ArrayBuffer(8);
const blob2 = new Blob([buffer]);

// 合并Blob
const combined = new Blob([blob1, blob2]);

3. FileReader

核心方法:

const reader = new FileReader();

reader.onload = (e) => {
  console.log(e.target.result);
};

reader.readAsText(blob);    // 讀取為文本
reader.readAsArrayBuffer(blob); // 讀取為ArrayBuffer
reader.readAsDataURL(blob); // 讀取為DataURL

4. ArrayBuffer

特性: 特性:固定長度的原始二進制緩沖區(qū)

操作方式:

const buffer = new ArrayBuffer(16);
const view = new Uint8Array(buffer);
view[0] = 255;
console.log(view); // Uint8Array [255, 0, 0, ...]

5. Base64

編碼原理: 每3字節(jié)轉(zhuǎn)換為4個ASCII字符

轉(zhuǎn)換示例:

// 文本轉(zhuǎn)Base64
btoa('Hello'); // 'SGVsbG8='

// Base64轉(zhuǎn)文本
atob('SGVsbG8='); // 'Hello'

6. DataURL

格式: data:[<mediatype>][;base64],<data>

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...

轉(zhuǎn)換關(guān)系大全

1. File ? Blob

// File → Blob 
const blob = file.slice(0, file.size, file.type);

// Blob → File
const file = new File([blob], 'filename', { type: blob.type });

2. Blob ? ArrayBuffer

// Blob → ArrayBuffer
const reader = new FileReader();
reader.readAsArrayBuffer(blob);
reader.onload = () => {
  const buffer = reader.result;
};

// ArrayBuffer → Blob
const newBlob = new Blob([buffer]);

3. Blob ? DataURL

// Blob → DataURL
const reader = new FileReader();
reader.readAsDataURL(blob);

// DataURL → Blob
function dataURLtoBlob(dataurl) {
const arr = dataurl.split(','),
        mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]),
        n = bstr.length,
        u8arr = newUint8Array(n);
while(n--) u8arr[n] = bstr.charCodeAt(n);
returnnew Blob([u8arr], { type: mime });
}

4. ArrayBuffer ? Base64

// ArrayBuffer → Base64
function arrayBufferToBase64(buffer) {
let binary = '';
const bytes = newUint8Array(buffer);
for (let i = 0; i < bytes.byteLength; i++) {
    binary += String.fromCharCode(bytes[i]);
  }
return btoa(binary);
}

// Base64 → ArrayBuffer
function base64ToArrayBuffer(base64) {
const binaryString = atob(base64);
const len = binaryString.length;
const bytes = newUint8Array(len);
for (let i = 0; i < len; i++) {
    bytes[i] = binaryString.charCodeAt(i);
  }
return bytes.buffer;
}

小結(jié)

類型

內(nèi)存占用

內(nèi)存占用

適用場景

Blob

文件存儲/切片上傳

ArrayBuffer

最低

最快

二進制操作/WebSocket傳輸

DataURL

文件存儲/切片上傳

Object URL

大文件預(yù)覽

責(zé)任編輯:武曉燕 來源: 前端之神
相關(guān)推薦

2022-09-28 08:01:33

JavaScript二進制

2024-03-14 10:31:33

JSbase64url

2023-11-07 08:35:26

2016-12-13 13:50:06

JAVA轉(zhuǎn)換Base64

2021-02-05 05:26:33

字節(jié)ASCII控制

2025-02-11 00:00:10

Base64編碼二進制

2014-02-20 10:28:28

JavaScriptBase64

2025-01-14 12:18:06

Base64加解密字符

2010-03-03 16:14:05

Python base

2021-03-05 09:10:19

base64編碼

2024-07-31 10:22:49

Go語言編碼

2021-08-26 05:27:08

Base64 字節(jié)流算法

2024-02-28 23:07:42

GolangBase64編碼

2021-09-07 08:59:09

編碼Base64解碼

2022-06-06 08:31:05

Base64編碼Base58

2024-07-11 08:42:57

2020-06-15 17:05:46

前端二進制瀏覽器

2019-07-23 08:55:46

Base64編碼底層

2022-10-29 19:58:09

Base64Bashshell

2023-01-26 00:31:25

ASCIIBase64UTF-8
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久精品福利 | av福利网| 特黄特黄a级毛片免费专区 av网站免费在线观看 | 欧美精品被 | 极品一区 | 九九久久这里只有精品 | 日日操夜夜操天天操 | 久久久久欧美 | 欧美成人a∨高清免费观看 91伊人 | 午夜影院| 自拍偷拍中文字幕 | 国产精品久久久久久中文字 | 久久大香 | 日韩一区二区三区四区五区六区 | 女生羞羞网站 | 超碰520| 成人性视频免费网站 | 欧洲亚洲一区二区三区 | 一级欧美 | 欧美成人性生活 | 国产成人高清视频 | 国产成人啪免费观看软件 | 成人精品鲁一区一区二区 | av一区二区三区四区 | 日韩一区二区三区在线视频 | 日韩成人免费在线视频 | 一区二区三区不卡视频 | av在线成人 | 欧美精品三区 | 成人欧美一区二区三区1314 | 伊人青青久久 | 亚洲日韩中文字幕一区 | 九九久久国产 | 一级毛片免费 | 国产一区二区三区四区 | 日韩在线精品 | 国产免费色 | 久久一级免费视频 | 欧美八区 | 国产欧美精品一区二区色综合朱莉 | 国产精久久久久久久妇剪断 |