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 附加组件)