JS中Blob对象和File对象有什么区别?

19
根据MDN Web Docs的说法:

Blob对象表示Blob,它是一种不可变的原始数据文件对象。Blob可作为文本或二进制数据进行读取,也可以转换为ReadableStream以便使用其方法处理数据。

我知道File对象继承了一些Blob属性,几乎可以在Blob可以使用的所有地方使用。但是,如果File可以在与Blob相同的上下文中使用,我如何选择它们之间的区别?有没有一些情况下一个更优于另一个?

1
有一些 blob 不是文件。 - Jonas Wilms
1个回答

25

如您所链接的页面所述:

File 接口基于 Blob,继承 blob 功能并扩展其支持用户系统上的文件。

File 文档 表明,除了 blob 属性外,文件还具有 lastModified 日期、name 和可能的路径。它还指出:

File 对象通常是从用户使用 <input> 元素选择文件返回的 FileList 对象或拖放操作的 DataTransfer 对象中检索的。

每当您可以实际选择要使用哪个时,这意味着您正在自己构建它们。与 Blob 构造函数 相反,File 构造函数 需要一个非可选的 name 参数。因此,每当您构建需要给文件命名的东西时,请使用 File


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接