惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
M
MIT News - Artificial intelligence
GbyAI
GbyAI
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
爱范儿
爱范儿
N
Netflix TechBlog - Medium
U
Unit 42
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 叶小钗
G
Google Developers Blog
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
腾讯CDC

开飞机的老张

AGENTS.md Openspec 使用心得 从树莓派内网穿透到 Cloudflare Pages Openclaw和博客 郊眠寺 采石 译:我为什么使用Map(和WeakMap)处理DOM节点 介绍JavaScript中Symbol 原生JavaScript获取URL参数 字符串首字母大写 用forEach()遍历对象 JavaScript禁用按钮 JavaScript的FormData 用FileReader读取本地文件 JavaScript的Thenable JavaScript中Promise的reject JavaScript的立即调用函数表达式(IIFE) JavaScript的Promise链 用interact.js实现拖拽、缩放、吸附 使用bluebird操作Promise JavaScript创建Promise JavaScript中Promise的catch函数 JavaScript比较数组
JavaScript的Blob
kaifeiji.cc · 2023-07-25 · via 开飞机的老张

原文:Blobs in JavaScript

Blob(二进制大型对象)是JavaScript中一种类似于文件的数据结构,相当于客户端的Buffer。

Blob是一个包含任意字节的对象。Blob类是浏览器File API的一部分:JavaScript的File类是Blob的子类,所以当你从<input type="file">中获取一个文件实例时,它其实也是Blob的实例。

1
2
3
4
5
const input = document.querySelector('input[type="file"]');
const file = input.files[0];

file instanceof File;
file instanceof Blob;

FileReader一样,Blob类在各种浏览器中支持良好,但Node.js支持。Node.js的Buffer和Blob很相似,他们都存储任意字节,但它们时完全不同的API。

Blob有一个简洁的createObjectURL()函数,经常用在预览上传图片预览。给定一个Blob,URL.createObjectURL()创建一个指向该Blob的URL,可以直接用在srchref属性中。

例如,如果你点击以下文件input,选择一张图片,你会看到选择图片的预览效果。

静态博客无法显示,请查看原文

以下是这个input的JavaScript代码,使用URL.createObjectURL()来创建一个指向上传文件的本地URL,不需要将文件真正上传到服务器。

1
2
3
4
5
6
7
8
9
10
const input = document.querySelector('#data-url-example');

input.addEventListener('change', () => {
const file = input.files[0];
const url = URL.createObjectURL(file);

document.querySelector('#data-url-container').innerHTML = `
<img src="${url}" />
`;
});

本教程对您有帮助吗?来GitHub仓库点个星支持我们吧!