前端二进制处理
是nodejs的二进制数据 , 是浏览器的二进制数据
<ArrayBuffer>
是核心对象,是所有的基础,是原始的二进制数据。
node处理
1 2 3
|
fs.writeFileSync(path, <Buffer>);
|
浏览器处理
1 2 3 4 5 6
| URL.createObjectURL(object)
URL.createObjectURL(file); URL.createObjectURL(blob);
|
系统交互
1 2 3
| node读取<Buffer>得到Uint8Array 转换为 Blob
URL.createObjectURL(new Blob([<Uint8Array >],{ type: 'image/jpeg' }))
|
资源转换
- bolb -> ArrayBuffe -> Uint8Array -> base64
1 2
| new Uint8Array(readAsArrayBuffer(bolb));
|
1
| window.URL.createObjectURL(new Blob([<Uint8Array >],{ type: 'image/jpeg' }))
|
1 2
| FileReader.readAsDataURL(blob)
|
- ArrayBuffer 互换 Uint8Array
1 2 3 4 5
| new Uint8Array(<ArrayBuffer>)
uint8Array.buffer;
|
1 2 3 4 5 6 7 8 9 10
| let binary = ''; const len = uint8Array.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode(res[i]); }
console.log('binary', binary)
const code = btoa(binary); const base64 = `data:image/jpg;base64,${code}`
|
MIME类型
- 文本文件:
text/plain
: 纯文本文件
text/html
: HTML 文件
text/css
: CSS 样式表
text/javascript
: JavaScript 文件
- 图像文件:
image/jpeg
: JPEG 图片
image/png
: PNG 图片
image/gif
: GIF 图片
image/svg+xml
: SVG 图形
- 音频文件:
audio/mpeg
: MP3 音频
audio/wav
: WAV 音频
audio/midi
: MIDI 音频
- 视频文件:
video/mp4
: MP4 视频
video/webm
: WebM 视频
video/mpeg
: MPEG 视频
- 应用程序文件:
application/pdf
: Adobe PDF 文档
application/zip
: ZIP 压缩文件
application/json
: JSON 数据
application/xml
: XML 文档
- 字体文件:
font/ttf
: TrueType 字体
font/woff
: Web Open Font Format (WOFF)
font/eot
: Embedded OpenType 字体
实践作业
将Uint8Array 处理成blobUrl和dataUrl
tips:数据流【file blob 】->【ArrayBuffer 】->【Uint8Array 】->【base64】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
const blob = new Blob([res], { type: 'image/jpeg' }); console.log('blob',blob) const uul = window.URL.createObjectURL(blob)
let binary = ''; const len = res.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode(res[i]); }
const url = btoa(binary);
const buff = res.buffer console.log('buff', buff) const blob2 = new Blob([buff], { type: 'image/jpeg' }); console.log('blob2', blob2)
const filereader = new FileReader(); filereader.onload = (e)=>{ const result = e.target?.result src.value = result }
filereader.readAsDataURL(blob2);
|