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

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

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

前言

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

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)

作用: 存儲(chǔ)二進(jìn)制數(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

特性: 特性:固定長(zhǎng)度的原始二進(jìn)制緩沖區(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個(gè)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)存占用

適用場(chǎng)景

Blob

文件存儲(chǔ)/切片上傳

ArrayBuffer

最低

最快

二進(jìn)制操作/WebSocket傳輸

DataURL

文件存儲(chǔ)/切片上傳

Object URL

大文件預(yù)覽

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

2024-03-14 10:31:33

JSbase64url

2022-09-28 08:01:33

JavaScript二進(jìn)制

2023-11-07 08:35:26

2021-02-05 05:26:33

字節(jié)ASCII控制

2016-12-13 13:50:06

JAVA轉(zhuǎn)換Base64

2025-02-11 00:00:10

Base64編碼二進(jìn)制

2014-02-20 10:28:28

JavaScriptBase64

2010-03-03 16:14:05

Python base

2021-03-05 09:10:19

base64編碼

2021-08-26 05:27:08

Base64 字節(jié)流算法

2024-07-31 10:22:49

Go語(yǔ)言編碼

2025-01-14 12:18:06

Base64加解密字符

2024-02-28 23:07:42

GolangBase64編碼

2021-09-07 08:59:09

編碼Base64解碼

2020-06-15 17:05:46

前端二進(jìn)制瀏覽器

2022-06-06 08:31:05

Base64編碼Base58

2024-07-11 08:42:57

2023-01-26 00:31:25

ASCIIBase64UTF-8

2019-07-23 08:55:46

Base64編碼底層

2022-10-29 19:58:09

Base64Bashshell
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 交专区videossex农村 | 国产日韩精品视频 | 久久综合av| 一级一级毛片免费看 | 国产成人亚洲精品 | 激情一区二区三区 | 久操福利 | 久久精品国产免费看久久精品 | 日本a视频 | 亚洲一区 中文字幕 | 免费一级毛片 | 97精品国产97久久久久久免费 | 91免费视频| 人人澡视频| 国产精品久久久久久52avav | 色婷婷综合网 | 日韩在线播放视频 | 欧美中文字幕一区二区 | 免费在线观看av网站 | 全免一级毛片 | 日韩中文在线观看 | 午夜影院官网 | 国产成人综合一区二区三区 | 久久久久久久久一区 | 欧美日韩国产中文 | 美女视频久久 | 国产精品视频网 | 国产亚洲精品a | 天堂久| 久久精品小视频 | 亚洲精品黄色 | 国产成人精品久久二区二区91 | 久久久久香蕉视频 | 国产欧美精品一区二区 | 亚洲成人精品影院 | 中午字幕在线观看 | 色视频在线播放 | 欧美在线观看一区 | 日韩在线免费视频 | 久久国产精品免费视频 | 日韩一区二区av |