首页 > 解决方案 > JS 中的 Blob 对象和 File 对象有什么区别?

问题描述

正如MDN Web Docs所说:

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

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

标签: javascriptobject

解决方案


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

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

File文档显示,除了 blob 属性之外,文件还具有lastModified日期、aname和可能的路径。它还指出

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

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


推荐阅读