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

Mar*_*zio 1 javascript object

正如MDN Web Docs所说:

Blob 对象代表一个 blob,它是一个类似文件的不可变原始数据对象;它们可以作为文本或二进制数据读取,或转换为 ReadableStream 以便其方法可用于处理数据。

我也知道 File 对象继承了 Blob 的一些属性,并且它几乎可以在 Blob 可以使用的任何地方使用。但是,如果 File 可以在与 Blob 相同的上下文中使用,我应该如何在它们之间进行选择?在某些情况下,一个比另一个更可取吗?

Ber*_*rgi 5

正如您链接的页面上所说:

File界面基于Blob,继承 blob 功能并对其进行扩展以支持用户系统上的文件。

File文档显示,除了BLOB属性,文件也确实有一个lastModified日期,name以及可能的路径。它还指出

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

每当您实际上可以选择使用哪个时,这意味着您正在自己构建它们。与此相反的Blob构造,该File 构造需要一个非可选名称参数。因此,每当您构建要为其指定文件名的内容时,请使用File.