文件(File) 接口提供有关文件的信息,并允许网页中的 JavaScript 访问其内容。
通常情况下, File 对象是来自用户在一个 <input> 元素上选择文件后返回的 FileList 对象,也可以是来自由拖放操作生成的 DataTransfer 对象,或者来自 HTMLCanvasElement 上的 mozGetAsFile() API。在Gecko中,特权代码可以创建代表任何本地文件的File对象,而无需用户交互(有关详细信息,请参阅注意事项。
File 对象是特殊类型的 Blob,且可以用在任意的 Blob 类型的 context 中。比如说, FileReader, URL.createObjectURL(), createImageBitmap(), 及 XMLHttpRequest.send() 都能处理 Blob 和 File。
参考 从Web应用程序使用文件 了解更多信息和例子。
构造函数
File()- 返回一个新构建的文件对象(
File)。
属性
File 接口也继承了 Blob 接口的属性:
File.lastModified只读- 返回当前
File对象所引用文件最后修改时间, 自 1970年1月1日0:00 以来的毫秒数。 File.lastModifiedDate只读- 返回当前
File对象所引用文件最后修改时间的Date对象。 File.name只读- 返回当前
File对象所引用文件的名字。 File.size只读- 返回文件的大小。
File.webkitRelativePath只读- 返回
File相关的 path 或 URL。
File.type只读- 返回文件的 多用途互联网邮件扩展类型
方法
File 接口没有定义任何方法,但是继承了 Blob 接口的方法。
规范
| 规范 | 状况 | 注释 |
|---|---|---|
| File API | Working Draft | Initial definition |
浏览器兼容性
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Basic support | 13 | (Yes) | 3.0 (1.9)[1] 7 (7) |
10.0 | 11.5 | 6.0 |
name |
? | (Yes) | 3.6 (1.9.2) | ? | ? | ? |
lastModifiedDate |
? | 未实现 | 15 (15) | ? | ? | ? |
webkitRelativePath |
(Yes) | (Yes) | 49 (49) | ? | (Yes) | (Yes) |
| size | ? | ? | ? | ? | ? | ? |
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | 未实现 | (Yes) | 1.0 (1.9)[1] 7.0 (7) |
未实现 | 11.1 | 6.0 |
name |
? | (Yes) | 1.0 (1.9.2) | ? | ? | ? |
lastModifiedData |
? | 未实现 | 15.0 (15) | ? | ? | ? |
webkitRelativePath |
(Yes) | (Yes) | 49.0 (49) | ? | (Yes) |
(Yes) |
| size | ? | ? | ? | ? | ? | ? |
[1] 非标准实现
注意事项
- 在Gecko中,你可以从Chrome代码中使用这个API。参见 Using the DOM File API in chrome code 详细内容. 从Chrome代码中使用它, JSM 和引导范围, 你必须使用它导入它
Cu.importGlobalProperties(['File']); - 从Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)开始,在特权代码(比如扩展中的代码)中,可以将一个
nsIFile对象传入File构造函数,从而生成一个 File 对象。 - 从Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5)开始,在 XPCOM 组件代码中,你可以直接使用
new File来创建一个File对象,而不需要像以前那样必须实例化一个nsIDOMFile对象。File对象和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)(bug 661876)。应该使用File.name,Blob.size, 和FileReader的方法来代替。