File - 提供有关文件的信息
File 接口提供有关文件的信息,并允许网页中的 JavaScript 访问其内容。
File 对象通常是来自用户通过 <input> 元素选择文件后返回的 FileList 对象,或者是来自拖放操作产生的 <datatransfer> 对象,或者是来自 HTMLCanvasElement 的 mozGetAsFile()API,在 Gecko 中,特权代码可以无需用户交互就创建代表任何本地文件的 File 对象(有关详细信息,请参阅实现说明)。
File 对象特殊类型的 Blob,可以在 Blob 可以使用的任何上下文中使用。比如 FileReader,URL.createObjectURL(),createImageBitmap(),和 XMLHttpRequest.send() 都能处理 Blob 和 File。
有关更多信息和示例,请参阅使用来自 Web 应用程序的文件。
构造函数
File()
返回一个新构造的 File 。
属性
File.lastModified 只读
返回文件的最后修改时间,从 UNIX 纪元(1970 年 1 月 1 日午夜)开始,以毫秒为单位。
File.lastModifiedDate 只读
返回当前 File 对象所引用文件最后修改时间的 Date 对象。
File.name 只读
返回 File 对象引用的文件的名称。
File.webkitRelativePath 只读
返回 File 的 URL 相对于的路径。
File 实现了 Blob,因此它还具有以下可用属性:
File.size 只读
以字节为单位返回文件的大小。
File.type 只读
返回文件的 MIME类型。
方法
File 接口没有定义任何方法,但是继承了 Blob 接口的方法:
Blob.slice([start[, end[, contentType]]])
返回一个新的 Blob 对象,该对象包含源 Blob 的指定字节范围内的数据。
规范
| 规范 | 状态 | 备注 |
|---|---|---|
| File API | 工作草案 | 初始定义 |
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基础支持 | 13 | 支持 |
7 3 — 71 |
10 | 11.5 | 6 |
File() constructor |
13 | 不支持 | 7 | 不支持 | 11.5 | 10.1 |
lastModified |
13 | 支持 | 15 | 10 | 16 | 不支持 |
lastModifiedDate |
13 | 12 | 15 — 61 | 10 | 16 | 不支持 |
name |
13 | 12 | 3.6 | 10 | 16 | 支持 |
type |
13 | 支持 | 3.6 | 10 | 16 | 支持 |
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| 基础支持 | 支持 | 支持 | 支持 |
7 4 — 71 |
未知 | 11.1 | 6 |
File() constructor |
支持 | 支持 | 支持 | 7 | 未知 | 不支持 | 6 |
lastModified |
支持 | 支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
lastModifiedDate |
支持 | 支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
name |
支持 | 支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
type |
支持 | 支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
1. 非标准的实现。
实现说明
-
在 Gecko 中,您可以在 chrome 代码中使用该 API。有关详细信息,请参阅在 chrome 代码中使用 DOM 文件 API。要从 chrome 代码,JSM 和引导范围使用它,您必须使用
Cu.importGlobalProperties(['File'])导入它; -
从 Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3) 开始,特权代码(例如扩展)可以将
nsIFile对象传递给 DOMFile构造函数,以指定要引用的文件。 -
从 Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5) 开始,您可以使用
new File从 XPCOM 组件代码创建File对象,而不必直接实例化nsIDOMFile对象。与Blob相比,构造函数采用文件名作为第二个参数。文件名可以是任何字符串。new File( Array parts, String filename, BlobPropertyBag properties ); -
Gecko 7 中 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) 删除了以下非标准属性和方法:
File.fileName,File.fileSize,File.getAsBinary(),File.getAsDataURL(),File.getAsText(string encoding)(Mozilla bug 661876)。应该使用标准属性File.name,Blob.size和FileReader上的方法。
相关链接
- 使用 Web 应用程序中的文件
FileReader- 在 chrome 代码中使用 DOM File API (对于在 Gecko 中运行的特权代码,例如 Firefox 附加组件)